Apache使用OpenSSL遇到的问题

一个Android APP使用HTTPs访问两台服务器,结果大相径庭。算法

第一台IP:192.168.22.119
版本:  OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
(Android STB) ==> OKapache

[21/Oct/2014:13:52:57 +0800] 192.168.3.33 TLSv1 RC4-MD5 "GET /cgi-bin/server_cgi?name=0022f42

第二台IP:192.168.22.129
版本:  OpenSSL 1.0.1e-fips 11 Feb 2013
(Andriod STB) ==> Fail浏览器

[21/Oct/2014:03:09:47 +0000] 192.168.3.33 TLSv1 RC4-MD5 "GET /cgi-bin/server_cgi?name=0022f42

Error Log:服务器

 [error] Hostname ABC.upgrade.com provided via SNI and hostname abc.upgrade.com provided via HTTP are different

可是用浏览器正常ide

(Chrome) ==> OK加密

[21/Oct/2014:04:06:08 +0000] 192.168.2.7 TLSv1.2 DHE-RSA-AES128-GCM-SHA256 "GET /cgi-bin/server_cgi?name=aaa

(IE 10) ==> OKcode

[21/Oct/2014:05:56:34 +0000] 192.168.2.2 TLSv1 AES128-SHA "GET /cgi-bin/server_cgi?name=0018050

首先弄明白什么是SNI(Server Name Indication)?
参考 SSL with Virtual Hosts Using SNI
clients在SSL握手的第一个消息中包含的requested hostname, Server根据这个hostname决定正确的named virtual host, 从而能够继续创建链接

要支持SNI
1. 须要OpenSSL 0.9.8f or later
2. The client browser must also support SNIserver

 

在Apache Bugzilla上有此Bug: SSL module does not do the case insensitive URI comparison
究其缘由是比较SNI name 和 Http Name时是case-sensitiveblog

 

More: 不一样浏览器TLS版本不一样,有V1, V1.2等。所支持的加密算法也不同。ip

相关文章
相关标签/搜索