查看文章 |
前段时间写了篇HTTPS与代理的问题,其实当天还有篇关于HTTPS的我没写,是另外一个人提到的,在现在的某些https的服务器上往往能够降低加密级别进行传输。 我做了以下测试: #openssl s_client -connect www.test.com:443 -cipher LOW CONNECTED(00000003) depth=1 /O=VeriSign Trust Network/OU=VeriSign, Inc./OU=VeriSign International Server CA - Class 3/OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain
--- Server certificate -----BEGIN CERTIFICATE----- MIIFizCCBPSgAwIBAgIQU7R3t7uaT+Byff4nh1zHFDANBgkqhkiG9w0BAQUFADCB ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy
bhjy07jqe3OPXalnOsbMhcC5ykHVYki/u/cGFsSX2bvRFXBm6sq0ppsKGH53k+lK Tjv8H1CAD82EislW+d2T4n/LYaNdSbXwEGK7gP6IrUR3tjInwFSYmIc0NRt2lQFP xZfYgnKdqMDJ77AGlORiuodWeWP1K96k/3XPSZnQiA== -----END CERTIFICATE----- --- No client certificate CA names sent --- SSL handshake has read 2483 bytes and written 379 bytes --- New, TLSv1/SSLv3, Cipher is DES-CBC-SHA Server public key is 2048 bit SSL-Session: Protocol : TLSv1 Cipher : DES-CBC-SHA Session-ID: 50884F1376257CE290AE2394118DFxxxxFD4B4A4CE5EBA820E2AyyyBAFA21647 Session-ID-ctx: Master-Key: 6227EBE63693A19A8079F3824F324CFxxxxx6F1D565D493F82EB964EEA6yyyyC71B4592E72E37C3A4D8C9876B72A9C04 Key-Arg : None Krb5 Principal: None Start Time: 1244445225 Timeout : 300 (sec) Verify return code: 20 (unable to get local issuer certificate) --- 由于我在握手的时候使用了 cipher LOW,所以服务器也使用相对低级的 DES-CBC-SHA 来握手,降级了。这个级别的加密强度,如果存在proxy,记录了密文后,是有可能破解出key的。 现在的主流浏览器默认都已经不支持LOW级别的cipher了,所以一般的webserver完全没必要再支持这种加密方式。 上面是题外话,今天看到另外一篇,才让我有写这篇blog的冲动。 Ivan大牛建立了一个 SSL Labs http://blog.ivanristic.com/2009/06/ssl-labs-launches.html 地址是 https://www.ssllabs.com 本因是他最近研究SSL相关项目时候,感觉SSL虽然用的多,但很多人都没用好,甚至用错,所以他决定搞这么个站,探讨下一些SSL的问题。 其中第一个专题就很让我感兴趣 HTTP Client Fingerprinting Using SSL Handshake Analysis每个客户端握手时候可能都会不同,所以作者准备写个apache mod,来进行客户端的指纹识别。不过目前这个项目才刚建立,还在记录log阶段,没有开始指纹识别,所以看不到他的一些研究成果,比如IE和FF在进行SSL握手时候是否会不同,等 但这还是个让人非常兴奋的idea。期待更新。 * This way of fingerprinting is much more reliable than other approaches * (e.g. TCP/IP fingerprinting), for the following reasons: * * - HTTP proxies do not terminate SSL, which means that every client * creates a unique data stream that is sent directly to servers. * * - NAT will modify TCP/IP packets, but leave the SSL data stream * untouched. |