我正在尝试获取远程服务器的证书,然后可以使用该证书添加到密钥库并在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-文本