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

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

您能想到任何 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'

相关内容