获取网站的https证书时出现问题

时间:2014-10-27 08:48:38

标签: ssl openssl

我有一个Android应用,在通过https连接时,网站的证书有问题。因为即使使用带有证书的自定义密钥库(“无对等证书”),我也遇到了麻烦。我正在尝试获取有关服务器实际提供的连接,握手和证书的更多信息。

openssl的版本如下:

$ openssl version
OpenSSL 1.0.1e 11 Feb 2013

当我试图获取有关证书的信息时,我得到了这个回复:

$ openssl s_client -showcerts -connect [hostname]:443 </dev/null
CONNECTED(00000003)
3069977808:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:749:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 308 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

这就是Chrome描述连接的方式(对于挪威文本感到抱歉,但您了解了连接和加密类型: adf

根据Chrome提供的信息,我尝试了不同的命令来获取证书,但它们似乎都失败了。我的最佳候选人是这一个:

$ openssl s_client -showcerts -connect [hostname]:443 -tls1_2 -cipher RC4-MD5
CONNECTED(00000003)
3069396176:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1258:SSL alert number 40
3069396176:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1414399499
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

根据给出的信息,任何人都有任何提示吗?

1 个答案:

答案 0 :(得分:3)

这可能是SNI问题,其中服务器没有为非SNI客户端定义的默认证书。 Android包含一个版本的Apaches httpclient,已知它不支持SNI,而你的openssl s_client命令也不使用SNI。

请尝试openssl s_client -servername hostname -connect ...使用SNI并查看是否有帮助。