参考资料:
http://blog.163.com/hlz_2599/blog/static/142378474201151933643431/
DevOps
参考资料:
http://blog.163.com/hlz_2599/blog/static/142378474201151933643431/
1. 下面这句话怎么解释?
1 2 3 4 |
Note: According to current US export law, RSA moduli larger than 512 bits may not be used for key exchange in software exported from the US. With this message, larger RSA keys may be used as signature-only certificates to sign temporary shorter RSA keys for key exchange. |
为什么超过512位只允许用于签名而不允许用户密钥交换?难道超过512位用于密钥交换不是更加安全吗?
2. Server Key Exchange Message 的作用
1 2 3 4 5 6 7 8 9 10 |
The server key exchange message is sent by the server if it has no certificate, has a certificate only used for signing (e.g., DSS [<a title=""Digital Signature Standard"" href="http://tools.ietf.org/html/rfc6101#ref-DSS">DSS</a>] certificates, signing-only RSA [<a title=""A Method for Obtaining Digital Signatures and Public-Key Cryptosystems"" href="http://tools.ietf.org/html/rfc6101#ref-RSA">RSA</a>] certificates), or FORTEZZA KEA key exchange is used. This message is not used if the server certificate contains Diffie-Hellman [<a title=""New Directions in Cryptography"" href="http://tools.ietf.org/html/rfc6101#ref-DH1">DH1</a>] parameters. Note: According to current US export law, RSA moduli larger than 512 bits may not be used for key exchange in software exported from the US. With this message, larger RSA keys may be used as signature-only certificates to sign temporary shorter RSA keys for key exchange. |
如果server没有证书,或者server的证书只用于签名(如DSS证书,或只用于签名的RSA证书),这时候server端就会生成一对临时的公私钥,用户密钥交换。
3. 客户端是如何确认sever端的身份的?
首先,通过证书的校验机制,验证证书的有效性;然后,使用证书公钥
4. 共享密钥的交换过程是怎样的?
5. 关于ssl的sessionid的概念?
如果sessionid标识的session在server端没有过期的话,就不需要再校验证书,协商密钥套件了。(如果server端的配置有问题的话,你会发现依然有证书校验的过程),该sessionid在客户端一般不会落地的,比如: 重启浏览器后该sessionid就消失了
6. ssl与tls的关系
ietf对ssl做了标准化,在ssl3.0的基础上定义了tls1.0 规范
7. curl -H “Host: login.sina.com.cn” -v “https://10.54.38.18/httpsdetector.php”
curl 不会使用-H指定的域名来和返回的证书做匹配的。也不会把ip作为server_name 写到ssl的扩展字段中,如果使用
curl “https://login.sina.com.cn/httpsdetector.php”
则会把 login.sina.com.cn 写到 ssl的server_name 的扩展字段中的
参考资料:
http://rrsongzi-gmail-com.iteye.com/blog/603015
http://wenku.baidu.com/view/1f64701a10a6f524ccbf8595.html
一度以为虚拟主机的配置是和http协议中的“Host”请求头有密切关系的,而ssl工作在http的下一层协议,先于http建立连接的,而在建立连接的时候是需要和“Host”相对应的证书的,再而且该证书在server端是配置在虚拟主机中的,所以,单个IP无法配置多个证书提供多个https的服务的,今天在阅读ssl的rfc时,一边也分析了ssl的握手过程,才发现host信息完全可以通过ssl的扩展字段告知server端该提供哪一份证书,于是,去百度google了一下,果然是可以这么做的。
通配型ssl证书, 如: *.phpor.net , 适用于 a.phpor.net, b.phpor.net 等等
多域名ssl证书,即: 一个证书可以关联多个不相关的域名,为多个域名提供认证
1 |
Transport Layer Security (TLS) Extensions |
http://coolerfeng.blog.51cto.com/133059/91736/
http://zhumeng8337797.blog.163.com/blog/static/1007689142011023102443424/ (参考其中的mod_gnutls)
http://tools.ietf.org/html/rfc6101
http://www.ietf.org/rfc/rfc3546.txt (参考其中的 server_name)
patch是个什么东西?有什么用呢?
从一个实际的例子说起吧,看一些linux上crond 的源码: http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/vixie-cron-4.1-72.el5.src.rpm
打开该文件后,会发现里面有很多的patch文件,要想看到完整的cron的源文件,需要自己打这些patch,如果不了解patch命令还不太好办。
首先解压该文件,目录结构大概为:
/
1.patch
2.patch
…
vixie-cron-4.1.tar.gz // 打patch之前的源文件
vixie-cron.spec
首先从vixie-cron.spec中grep出来要打的patch:
grep -i “^patch” vixie-cron.spec |awk ‘{print $2}’ >~/phpor
然后解压vixie-cron-4.1.tar.gz
tar -zxf vixie-cron-4.1.tar.gz
cd vixie-cron-4.1
while read p; do patch -p1 <../$p; done <~/phpor
这样就ok了。
关于patch命令的参考资料:
http://blog.chinaunix.net/uid-9525959-id-2001542.html
patch练习:
1. 创建一个patch文件
diff -uN oldfile newfile>1.patch
2. 打patch
patch <1.patch
给目录打patch
1. diff -uNr olddir newdir>2.patch
2. 打patch
patch <2.patch
diff 参数说明:
-u : 使用统一的输出格式 (默认的格式打patch不太好使)
-N: 对于目录比较来讲,新文件也打进去
-r: 对于目录来讲,递归处理子目录
http://baike.baidu.com/view/1139590.htm
http://baike.baidu.com/view/4369217.htm
作为一个和linux打交道的技术人员,需要了解linux、kernel、gnu、centos、redhat、RHEL等名词。
想看一下centos上的cron的源代码,不知道哪里找去;cron是centos发行版中自带的软件,你们http://centos.org 上应该有的吧,去了才发现里面都是二进制的代码包,根本没有源代码;最后是在http://redhat.com上找见的,为什么呢?这就是上面提到的需要了解的东西。
linux通常指:kernel+gnu; kernel指的是内核,而gnu是一系列的开源的工具集;kernel+gnu依然是一个概念,不是一个可以使用的操作系统,而centos、redhat等等就是一个打包好的操作系统,就是我们通常所说的“发行版”;“发行版”是已编译好的操作系统,提供二进制的发布,不提供源代码,所以在centos.org上是找不到源代码的
centos5的源代码地址: http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/
搜索方式: 在google中搜索:
vixie-cron-4.1-72.el5.src.rpm site:ftp.redhat.com
了解了这些之后,查看操作系统的源代码就方便多了,就不用到处去搜了
centos 安装文件: http://mirrors.sohu.com/centos/5/isos/i386/
主要js文件:
http://imgcache.qq.com/ptlogin/ver/10013/js/xui.js?v=10007
建议将该文件格式化后分析,可以通过fiddler 自动响应的功能使用格式化的文件,然后在函数: onQloginSelect 上设置断点,然后跟踪下去就行了。
关键技术:
1. 浏览器插件,IE下使用 ActiveObjectX ,其它浏览器使用embed
2. 登录请求通过对域名的限制来实现
QQ登录插件文件:
C:\Program Files\Tencent\QQ\Bin\TXSSO\bin\npSSOAxCtrlForPTLogin.dll
分析的结果和下面文件中描述的一致,所以不再细说。曾经分析过,只是没有记录,都给忘了,这里记录一下。
相关参考资料: 搜索关键字:“embed application nptxsso”
http://1.lanz.sinaapp.com/?p=152
http://www.dewen.org/q/1027
http://www.udpwork.com/item/7598.html
学到的一些知识:
——————————————– 摘自上面参考资料
原来,QQ 使用了历史很悠久的 NPAPI(Netscape Plugin Application Programming Interface)接口。NPAPI 几乎支持所有主流浏览器,包括 FireFox、Chrome、Opera(IE 从 5.5 后停止支持 NPAPI,转而使用 ActiveX)。
打开 chrome://plugins/ 我们可以发现自动登录的有关插件,而在路径 C:\Program Files (x86)\Common Files\Tencent\TXSSO 下就可以找到关于 SSO 的相关动态链接库。
np 插件一般命名都会加np前缀 如 QQ 的这个 npSSOAxCtrlForPTLogin.dll,只要按照标准的写法,放在浏览器会加载的地方,用的时候写个标签就可以在 js 里面调用了。于是跨浏览器(无视 IE)的插件开发变得相当可行。运行在 NPAPI 插件中的代码拥有当前用户的所有权限,不在沙箱中运行,所以它的扩展程序在被 Chrome 网上应用店接受前要求人工审核。
————————————————–
注意“插件”与“扩展”的区别,这里说的是“插件”; 上面提到的“人工审核”机制是怎么做到不审核就无法使用的呢? 在浏览器上通过都需要该浏览器的厂商审核通过?