![通过 Linux 命令行保存远程 SSL 证书](https://linux22.com/image/510337/%E9%80%9A%E8%BF%87%20Linux%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BF%9D%E5%AD%98%E8%BF%9C%E7%A8%8B%20SSL%20%E8%AF%81%E4%B9%A6.png)
您能想到任何 Linux 命令行方法来保存 HTTPS 服务器提供的证书吗?类似于让 curl/wget/openssl 建立 SSL 连接并保存证书而不是 HTTP 响应内容。
与我所寻找的 GUI 等同的是浏览 HTTPS 站点,双击浏览器“安全站点”图标,然后导出证书。不过这里的目标是非交互地执行此操作。
谢谢,吉姆
答案1
就像是:
openssl s_client -servername remote.server.net -connect remote.server.net:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/path/to/certificate.pem
这就是我使用 fetchmail 来检索支持 SSL 的 IMAP 或 POP3 服务器的证书的方法(显然我不使用端口 443)
(请注意,“冗余”-servername
参数对于发出openssl
支持 SNI 的请求是必需的。)
答案2
从http://www.madboa.com/geek/openssl/#cert-retrieve
#!/bin/sh
#
# usage: retrieve-cert.sh remote.host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}
echo |\
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'