我想使用 openssl 命令自动执行以下过程:
- 打开浏览器,转到https://www.google.com
- 检查 SSL 证书
- 以 DER 格式导出到本地
我一直在按照以下命令进行工作(这里用 python 包装):
本地(“echo -n | openssl s_client -connect google.com:443 -certform DER | sed -ne'/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'> /tmp/google.com.der”)
但它并没有给我我所期望的结果。
答案1
您的sed
命令仅捕获openssl s_client
的标准输出,但证书附带了标准错误上的其他调试信息。您尝试过类似的事情吗?
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
答案2
openssl
您可能会看到在 stderr 上输出并被 忽略的行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-----