使用openssl s_client连接到EPP服务器时出错

时间:2017-02-12 22:55:11

标签: ssl openssl

我目前正在尝试使用openssl s_client连接到EPP服务器来验证我的连接。以下命令输出以下内容。

openssl s_client -connect example.com:700

响应:

CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
41282:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL0 98-64.30.2/src/ssl/s3_pkt.c:1145:SSL alert number 40
41282:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.30.2/src/ssl/s23_lib.c:185:

然后我继续从https://www.digicert.com/CACerts/DigiCertSHA2SecureServerCA.crt

下载DigiCert SHA2安全服务器CA.

然后我重新尝试使用使用openssl创建的自签名证书以及新的DigiCert证书。

openssl s_client -connect example.com:700 -CAfile DigiCertSHA2SecureServerCA.crt -key key.pem -cert cert.pem -debug

我得到同样的错误。我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

根据您提供的信息,客户端从服务器获取证书并继续握手,然后从服务器返回handshake_failure(警报40)。在此握手阶段获得此错误可能是由于服务器期望获得客户端未提供的客户端证书。但是,确实需要有更多的信息,理想情况下是连接的完整数据包捕获。

答案 1 :(得分:0)

如果您使用的是自签名证书,则应对-CAfile-cert使用相同的文件。如果您在-CAfile中使用DigiCert CA,那么在-cert中它应该是由DigiCert签署的证书。

此外,服务器需要接受您的证书,这意味着它需要预先拥有其CA(以及可能的中间CA)。