我正在尝试获取远程服务器的证书,然后可以将其添加到我的密钥库中并在我的 Java 应用程序中使用。
一位高级开发人员(正在度假:( )告诉我我可以运行这个:
openssl s_client -connect host.host:9999
获取转储的原始证书,然后我可以复制并导出该证书。我收到以下输出:
depth=1 /C=NZ/ST=Test State or Province/O=Organization Name/OU=Organizational Unit Name/CN=Test CA
verify error:num=19:self signed certificate in certificate chain
verify return:0
23177:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1086:SSL alert number 40
23177:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:
我也尝试过使用此选项:
-showcerts
还有这个(请注意,在 Debian 上运行):
-CApath /etc/ssl/certs/
但我得到同样的错误。
这个来源 http://gagravarr.org/writing/openssl-certs/personal.shtml说我可以使用 CApath 标志,但它似乎没有帮助。我尝试了多种路径均无效。
请让我知道我哪里出错了。
With SNI
如果远程服务器使用 SNI(即在单个 IP 地址上共享多个 SSL 主机),您将需要发送正确的主机名才能获取正确的证书。
openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 </dev/null
没有 SNI
如果远程服务器没有使用SNI,那么你可以跳过-servername
范围:
openssl s_client -showcerts -connect www.example.com:443 </dev/null
要查看站点证书的完整详细信息,您也可以使用以下命令链:
$ echo | \
openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | \
openssl x509 -text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)