Rai*_*tor 222 ssl openssl wget ssl-certificate
我想使用 wget 或任何其他命令从https://www.google.com下载 ssl 证书。任何unix命令行?wget 还是 openssl?
Sea*_*der 306
为了下载证书,您需要像这样使用 openssl 内置的客户端:
echo -n | openssl s_client -connect $HOST:$PORTNUMBER -servername $SERVERNAME \
| openssl x509 > /tmp/$SERVERNAME.cert
Run Code Online (Sandbox Code Playgroud)
这会将证书保存到/tmp/$SERVERNAME.cert.
在 SNI 的情况下,-servername 用于在出现多个证书时选择正确的证书。
-showcerts如果要下载链中的所有证书,可以使用。但如果只是想下载服务器证书,则无需指定-showcerts. 最后的“x509”将去除中间证书,您需要使用“sed -n '/-----BEGIN/,/-----END/p'”而不是x509结尾。
echo -n 给服务器一个响应,以便释放连接
openssl x509'删除有关证书链和连接详细信息的信息。这是将证书导入其他密钥库的首选格式。
Rai*_*tor 67
我找到了答案。Openssl 提供了它。
openssl s_client -connect ${REMHOST}:${REMPORT}
big*_*ose 28
该GNUTLS客户端工具,gnutls-cli也可以使这个简单的:
gnutls-cli --print-cert www.example.com \
< /dev/null \
> www.example.com.certs
Run Code Online (Sandbox Code Playgroud)
该程序旨在为站点提供交互式客户端,因此您需要为其提供空输入(在本例中为 from /dev/null)以结束交互式会话。
Tho*_*ner 15
true | openssl s_client -connect google.com:443 2>/dev/null | openssl x509
Run Code Online (Sandbox Code Playgroud)
openssl 的这种模式需要 stdin,所以我们通过 提供它true |,这会连接到 -connect 参数中指定的服务器。2>/dev/null消除错误(可选),我们可以将整个输出传递给 x509 解析器,指定/dev/stdin使用 shell 管道作为输入文件。这将只输出输出的-----BEGIN CERTIFICATE-----to-----END CERTIFICATE-----部分s_client。您可以通过添加> google.com.pem到命令的末尾将其重定向到文件。
据我所知,这不会验证证书链,它只能告诉您终端服务器提供的 ssl 身份。
oDD*_*ooL 10
根据@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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
404290 次 |
| 最近记录: |