openssl -connect返回错误的证书

时间:2014-07-07 14:43:43

标签: apache ssl certificate

这是我的问题。 我在一个apache webserver上托管了多个域。 (虚拟主机) 其中两个(a.com和b.com)使用ssl证书。 我使用这些命令配置了两个:

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/ABC.crt
    SSLCertificateKeyFile /etc/apache2/ssl/ABC.key
    SSLCertificateChainFile /etc/apache2/ssl/ABC.chain.crt
    SSLProtocol             all -SSLv2

当我尝试通过浏览器(chrome,Firefox,IE)连接时,它工作正常,我得到了正确的证书。 但是在android上我得到了一个例外:没有对等证书

然后我尝试用这个命令测试它:

    openssl s_client -connect b.com:443

它返回了a.com的证书。 有什么建议我做错了,我用openssl和android得到了错误的证书?

1 个答案:

答案 0 :(得分:12)

在同一IP地址上可能有多个主机,您需要使用服务器名称指示(SNI)来访问此站点。对于openssl s_client -servername使用openssl s_client -connect b.com:443 -servername a.com选项的SNI,例如{{1}}。至于android:根据https://developer.android.com/training/articles/security-ssl.html,对于HttpsURLConnection,支持SNI,但对于Apache HTTP Client则不支持SNI。