通过 Linux 命令行保存远程 SSL 证书

30 linux ssl https ssl-certificate x509

你能想到任何 linux 命令行方法来保存 HTTPS 服务器提供的证书吗?类似于让 curl/wget/openssl 建立 SSL 连接并保存证书而不是 HTTP 响应内容。

相当于我正在寻找的 gui 是浏览到 HTTPS 站点,双击浏览器“安全站点”图标,然后导出证书。除了这里的目标是非交互式地进行。

谢谢,吉姆

Cry*_*vok 44

就像是:

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
Run Code Online (Sandbox Code Playgroud)

这就是我使用 fetchmail 来检索支持 SSL 的 IMAP 或 POP3 服务器的证书(显然我不使用端口 443)

(请注意,“冗余”-servername参数是openssl使用 SNI 支持进行请求所必需的。)

  • 有什么办法可以得到完整的链? (3认同)

Mat*_*ons 9

来自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'
Run Code Online (Sandbox Code Playgroud)