如何将远程服务器的SSL证书保存为文件
我需要下载一个远程服务器的SSL证书(不是HTTPS,但SSL握手应该和Google Chrome / IE / wget和Curl一样,都会出现证书检查失败的错误),然后在我的笔记本电脑的证书商店中添加证书为可信的,因为我无法让我的IT人员给我CA证书。
这是用在办公室通信上的,所以我无法使用实际的客户端来获取证书。
我需要下载一个远程服务器的SSL证书(不是HTTPS,但SSL握手应该和Google Chrome / IE / wget和Curl一样,都会出现证书检查失败的错误),然后在我的笔记本电脑的证书商店中添加证书为可信的,因为我无法让我的IT人员给我CA证书。
这是用在办公室通信上的,所以我无法使用实际的客户端来获取证书。
一个快速的方法是运行下面的命令来获取证书并下载,该命令会将-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
说实话,我以前从来没有尝试过这个方法(从来没有需要),但是,我刚刚在Firefox中尝试过,它似乎对保存工作:
View Certificate
Details
选项卡Export
使用Chrome浏览器导出证书
2.点击锁定符号,然后点击详细信息
1.点击 “详细信息"。从Chrome 56版本开始,你要做的是:进入三点菜单->更多工具->开发者工具,然后点击安全选项卡。这将给你一个安全概述和一个查看证书按钮。点击查看证书按钮.
这是gbroiles的回答,但是我想指出的是,cURL项目有一个页面,里面有更多的细节关于使用openssl
来保存远程服务器的SSL证书:
openssl s\_client -connect {HOSTNAME}:{PORT} | tee logfile
QUIT
,然后按回车键。自动*
-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 for mac的keychain我用的是什么,应该是类似的…..
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain host.name.com.cer
这将给出只包含证书的结果
echo QUIT | \
openssl s_client -showcerts -connect hostname:port | \
awk '/-----BEGIN CERTIFICATE-----/ {p=1}; p; /-----END CERTIFICATE-----/ {p=0}' "
```。
找到了一个更容易的方法,如果在Windows上。试了一下Microsoft Edge (pre-chromium),然后点击地址栏中的锁–>查看证书对话框弹出 “导出到文件 "按钮,将其保存为.crt文件。