我需要下载远程服务器的 SSL 证书(不是 HTTPS,但 SSL 握手应该与 Google Chrome/IE/wget 和 curl 相同,所有证书检查都失败错误)并将该证书添加为我笔记本电脑 Windows 证书存储中的受信任证书,因为我无法让我的 IT 人员给我 CA 证书。
这是用于办公室通信,所以我无法真正使用实际客户端来获取证书。
我该怎么做呢,我有 Windows 7 和一堆 Linux,所以任何工具/脚本语言都可以。
答案1
如果您可以访问 OpenSSL,请尝试
openssl s_client -connect {HOSTNAME}:{PORT} -showcerts
用您需要的值替换 {HOSTNAME} 和 {PORT}。
答案2
提取和下载证书的快速方法是运行以下命令,该命令将 -showcerts 的输出传送到 x509 ssl 命令,该命令会删除所有无关内容。例如:
openssl s_client -showcerts -connect server.edu:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem
要使用证书,请使用 wget,
wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem
答案3
说实话,我以前从未尝试过这个(也不需要),然而我刚刚在 Firefox 中尝试过,它似乎可以保存:
- 单击顶部的 SSL 证书图标/底部的挂锁。
- 点击
View Certificate
- 点击
Details
标签 - 从层次结构中选择您想要的证书 [图中未圈出]
- 点击
Export
答案4
自动化
我需要 -servername 来从我们服务器上的虚拟主机获取正确的证书。
openssl s_client -showcerts -connect host.name.com:443 -servername host.name.com </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > host.name.com.pem
您也可以转换为桌面证书
openssl x509 -inform PEM -in host.name.com.pem -outform DER -out host.name.com.cer
最后一部分是将其添加到您的证书中,不确定
我在 Windows 上是否使用过 Mac 钥匙串,应该类似......
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain host.name.com.cer