使用openssl从服务器获取证书

我正在尝试获取远程服务器的证书,然后可以使用该证书添加到密钥库并在Java应用程序中使用

一位高级开发人员(正在度假:())通知我可以运行以下命令:

openssl s_客户端-连接主机。主机:9999

获取转储的原始证书,然后复制并导出。我收到以下输出:

depth=1/C=NZ/ST=测试州或省/O=组织名称/OU=组织单位名称/CN=测试CA
验证错误:num=19:证书链中的自签名证书
验证返回:0
23177:错误:14094410:SSL例程:SSL3_读取_字节:sslv3警报握手失败:s3_pkt.c:1086:SSL警报编号40
23177:错误:140790E5:SSL例程:SSL23_写入:SSL握手失败:s23_lib.c:188:

我也尝试过这个选项:

-showcerts

这一个(在Debian上运行,请记住):

-CApath/etc/ssl/certs/

但我也犯了同样的错误

这个消息来源说我可以使用CApath标志,但它似乎没有帮助。我尝试了多个路径,但都没有用

请告诉我哪里出了问题

和SNI

如果远程服务器使用SNI(即在一个IP地址上共享多个SSL主机),则需要发送正确的主机名才能获得正确的证书

openssl s_客户端-showcerts-servername www.example.com-connect www.example.com:443</dev/null

没有SNI

如果远程服务器未使用SNI,则可以跳过-servername参数:

openssl s_客户端-showcerts-connect www.example.com:443</dev/null

要查看站点证书的完整详细信息,您还可以使用以下命令链:

$echo|\
openssl s_客户端-服务器名www.example.com-连接www.example.com:443 2>/dev/null|\
openssl x509-文本

发表评论