我有一个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描述连接的方式(对于挪威文本感到抱歉,但您了解了连接和加密类型:
根据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)
---
根据给出的信息,任何人都有任何提示吗?
答案 0 :(得分:3)
这可能是SNI问题,其中服务器没有为非SNI客户端定义的默认证书。 Android包含一个版本的Apaches httpclient,已知它不支持SNI,而你的openssl s_client
命令也不使用SNI。
请尝试openssl s_client -servername hostname -connect ...
使用SNI并查看是否有帮助。