如何自动导出一个网站的DER编码证书?

我想使用openssl命令自动执行以下过程:

  • 打开浏览器,转到https://www.google.com
  • 检查ssl证书
  • 以DER格式本地导出

我一直在沿着下面的命令行(这里用python包装):

local(“echo -n | openssl s_client -connect google.com:443 -certform DER | sed -ne'/ -BEGIN CERTIFICATE – /,/ – END CERTIFICATE- / p'> /tmp/google.com.der”)

但它不能给我我所期望的。

你的sed命令只捕获openssl s_client的标准输出,但是证书附带了标准错误的其他debugging信息。 你有没有尝试过这样的事情?

 openssl s_client -connect google.com:443 </dev/null 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -outform DER >/tmp/google.com.der 

您可能会看到stderr上openssl输出的行,并被sed忽略。 在将输出传递给sed之前,你可以摆脱这些:

 % echo | openssl s_client -connect google.com:443 -certform DER 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' -----BEGIN CERTIFICATE----- MIIF/DCCBWWgAwIBAgIKUCYyawAAAAB1rzANBgkqhkiG9w0BAQUFADBGMQswCQYD ... v6UdT7iXlxVh2oslpIksSw2bf0H7PUQQjFCMLVbiEMAQbXal4+SsyYB+GsPVvlR+ -----END CERTIFICATE-----