总结openssl常见用法
通过这几篇 openssl 签发证书的学习和实践,相信你一定能感受到 openssl 命令行的强大。它还有很多其它强大的功能,待我们取学习和发掘。本文的目标是总结 openssl 关于证书的常见操作和使用方法。
证书格式转换
1. CER
格式转换为 DER
我们知道 DER
就是原始二进制格式,CER
格式其实就是 DER
经过 Base64 编码后的格式。
1
| cat cert.cer | base64 -d > cert.der
|
2. DER
格式转换为 CER
1
| base64 cert.der > cert.cer
|
3. DER
格式转换为 PEM
1 2 3
| openssl x509 -inform der -in cert.der -out cert.pem
|
4. PEM
格式转换为 DER
1
| openssl x509 -outform der -in cert.pem -out cert.der
|
5. PEM
格式转换为 PFX
1
| openssl pkcs12 -export -in client.pem -inkey client.key -out client.pfx
|
6. PFX
格式转换为 PEM
仅导出证书
1 2
| openssl pkcs12 -in cert.pfx -nokeys -out cert.pem openssl pkcs12 -in cert.pfx -nokeys -passin pass:123456 -out cert.pem
|
仅导出私钥
1 2 3 4 5 6
| openssl pkcs12 -in cert.pfx -nocerts -nodes -out cert.key
openssl pkcs12 -in cert.pfx -nocerts -passout pass:123123 -out cert.key
openssl pkcs12 -in cert.pfx -nocerts -passin pass:123 -passout pass:123 -out cert.key
|
同时导出证书和密钥
1
| openssl pkcs12 -in cert.pfx -passin pass:123 -out all.pem -nodes
|
7. PKCS8 私钥格式转换为 ECDSA PKCS1 格式
1
| openssl ec -in p8.key -out p1.key
|
证书内容查看
1
| openssl x509 -noout -text -in server.pem
|
1
| openssl req -noout -text -in server.csr
|
1 2 3
| openssl pkey -noout -text -in server.key openssl rsa -noout -text -in server.key openssl ec -noout -text -in server.key
|
证书验证
1 2 3 4
|
openssl verify -CAfile caChain.pem server.pem
|
1 2 3 4
| openssl x509 -noout -pubkey -in server.pem
openssl pkey -pubout -in server.key
|
HTTPS访问与测试
1
| openssl s_client -connect demo.com:443
|
1 2 3 4 5 6
| openssl s_server -accept 443 -key server.key -cert server.pem \ -www -debug -msg -CAfile certChain.pem -Verify 3
|
1
| openssl s_client -quiet -connect demo.com:443
|
1
| openssl s_client -showcerts -connect demo.com:443
|
1
| openssl s_client -alpn h2 -servername demo.com -connect demo.com:443 | grep -i alpn
|
1 2
| openssl s_client -connect demo.com:443 -tls1_2 -sess_out sess.pem -no_ticket openssl s_client -connect demo.com:443 -tls1_2 -sess_in sess.pem -no_ticket
|
还有一种方式可以测试请求是否复用 Session
1
| openssl s_client -connect demo.com:443 2>&1 -reconnect | grep -E "New|Reuse"
|
如果要测试 Ticket 复用,命令跟 Session Cache 测试一样,去掉 -no_ticket
即可
1 2
| echo -e "GET / HTTP/1.1\r\nHost: demo.com\r\nConnection: Close\r\n" | \ openssl s_client -ign_eof -connect demo.com:443 -tls1_2 -no_ticket
|
上一篇 « 公钥密码标准PKCS系列
下一篇 » 用tmux提升你的命令行体验