我需要从网站下载证书。到目前为止,我一直使用gnutls
命令来获取它。
$ gnutls-cli --save-cert=ra-sec.pem vault.ra-sec.svc
我发现我可以使用openssl
:
$ openssl s_client -connect vault.ra-sec.svc:443
尽管如此,两次下载的证书并不相同。
有任何想法吗?
答案1
Openssl 确实不是在 ClientHello 消息中自动发送主机名,然后如果服务器配置了多个 TLS 证书,请求将返回默认 TLS 证书而不是特定于主机名的证书。
为了获得类似的输出,gnutls-cli
您可能需要使用-servername
和-showcerts
选项:
-servername name
在 ClientHello 消息中设置 TLS SNI(服务器名称指示)扩展。
-showcerts
显示整个服务器证书链:通常只显示服务器证书本身。
$ openssl s_client -showcerts -servername vault.ra-sec.svc -connect vault.ra-sec.svc:443
答案2
gnutls 版本
gnutls-bin --print-cert vault.ra-sec.svc:443 | certtool --certificate-info