原文链接:https://www.jianshu.com/p/f5f93c89155e
443 端口 debug
shell
1 | openssl s_client -connect localhost:443 -state -debug |
查看证书
查看 KEY 信息
shell
1 | openssl rsa -noout -text -in myserver.key |
查看 CSR 信息
shell
1 | openssl req -noout -text -in myserver.csr |
查看证书信息
shell
1 | openssl x509 -noout -text -in ca.crt |
验证证书
会提示 self signed
shell
1 | openssl verify selfsign.crt |
因为 myserver.crt 是幅 ca.crt 发布的,所以会验证成功
shell
1 | openssl verify -CAfile ca.crt myserver.crt |
去掉 key 的密码保护
有时候每次都要输入密码太繁琐了,可以把 Key 的保护密码去掉
shell
1 | openssl rsa -in myserver.key -out server.key.insecure |
不同格式证书的转换
一般证书有三种格式:
PEM(.pem) 前面命令生成的都是这种格式,
DER(.cer .der) Windows 上常见
PKCS#12 文件(.pfx .p12) Mac 上常见
PEM 转换为 DER
shell
1 | openssl x509 -outform der -in myserver.crt -out myserver.der |
DER 转换为 PEM
shell
1 | openssl x509 -inform der -in myserver.cer -out myserver.pem |
PEM 转换为 PKCS
shell
1 | openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.crt -certfile ca.crt |
PKCS 转换为 PEM
shell
1 | openssl pkcs12 -in myserver.pfx -out myserver2.pem -nodes |
测试证书
Openssl 提供了简单的 client 和 server 工具,可以用来模拟 SSL 连接,做测试使用。
连接到远程服务器
shell
1 | openssl s_client -connect www.google.com.hk:443 |
模拟的 HTTPS 服务,可以返回 Openssl 相关信息
-accept 用来指定监听的端口号
-cert -key 用来指定提供服务的 key 和证书
shell
1 | openssl s_server -accept 443 -cert myserver.crt -key myserver.key -www |
可以将 key 和证书写到同一个文件中
shell
1 | cat myserver.crt myserver.key $ myserver.pem |
使用的时候只提供一个参数就可以了
shell
1 | openssl s_server -accept 443 -cert myserver.pem -www |
可以将服务器的证书保存下来
shell
1 | openssl s_client -connect www.google.com.hk:443 remoteserver.pem |
转换成 DER 文件,就可以在 Windows 下直接查看了
shell
1 | openssl x509 -outform der -in remoteserver.pem -out remoteserver.cer |
计算 MD5 和 SHA1
MD5 digest
shell
1 | openssl dgst -md5 filename |
SHA1 digest
shell
1 | openssl dgst -sha1 filename |