如何从网站下载 SSL 证书?

如何从网站下载 SSL 证书?

我想从以下位置下载 SSL 证书:https://www.google.com,使用 wget 或任何其他命令。任何 unix 命令行?wget 还是 openssl?

答案1

为了下载证书,您需要使用 openssl 内置的客户端,如下所示:

</dev/null openssl s_client -connect $HOST:$PORTNUMBER -servername $SERVERNAME \
    | openssl x509 > /tmp/$SERVERNAME.cert

这会将证书保存至/tmp/$SERVERNAME.cert

-servername对于 SNI 来说,当出现多个证书时,使用它来选择正确的证书。

如果您想下载链中的所有证书,可以使用-showcerts。但是如果您只想下载服务器证书,则无需指定-showcertsx509末尾的将删除中间证书,您需要使用sed -n '/-----BEGIN/,/-----END/p'而不是末尾的 x509。

</dev/null表示不应向服务器发送任何内容,以便释放连接。

openssl x509删除有关证书链和连接详细信息的信息。这是将证书导入其他密钥库的首选格式。

答案2

我找到了答案。 Openssl 提供了它。

openssl s_client -连接 ${REMHOST}:${REMPORT}

答案3

通用网络传输层安全协议客户端工具,gnutls-cli也可以使这变得简单:

gnutls-cli --print-cert www.example.com \
        < /dev/null \
        > www.example.com.certs

该程序旨在为网站提供交互式客户端,因此您需要为其提供空输入(在此示例中为来自/dev/null)以结束交互式会话。

答案4

根据@bignose 的回答,这里有一个独立的版本,非常适合厨师食谱:

sudo apt-get install gnutls-bin 
gnutls-cli --print-cert myserver.com </dev/null| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > myserver.crt
sudo cp myserver.crt /usr/local/share/ca-certificates/myserver.crt
sudo update-ca-certificates

相关内容