原文链接:https://www.jianshu.com/p/f5f93c89155e

443 端口 debug

1
$ openssl s_client -connect localhost:443 -state -debug

查看证书

查看 KEY 信息

1
$ openssl rsa -noout -text -in myserver.key

查看 CSR 信息

1
$ openssl req -noout -text -in myserver.csr

查看证书信息

1
$ openssl x509 -noout -text -in ca.crt

验证证书

会提示 self signed

1
$ openssl verify selfsign.crt

因为 myserver.crt 是幅 ca.crt 发布的,所以会验证成功

1
$ openssl verify -CAfile ca.crt myserver.crt

去掉 key 的密码保护

有时候每次都要输入密码太繁琐了,可以把 Key 的保护密码去掉

1
$ openssl rsa -in myserver.key -out server.key.insecure

不同格式证书的转换

一般证书有三种格式:

PEM(.pem) 前面命令生成的都是这种格式,

DER(.cer .der) Windows 上常见

PKCS#12 文件(.pfx .p12) Mac 上常见

PEM 转换为 DER

1
$ openssl x509 -outform der -in myserver.crt -out myserver.der

DER 转换为 PEM

1
$ openssl x509 -inform der -in myserver.cer -out myserver.pem

PEM 转换为 PKCS

1
$ openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.crt -certfile ca.crt

PKCS 转换为 PEM

1
$ openssl pkcs12 -in myserver.pfx -out myserver2.pem -nodes

测试证书

Openssl 提供了简单的 client 和 server 工具,可以用来模拟 SSL 连接,做测试使用。

连接到远程服务器

1
$ openssl s_client -connect www.google.com.hk:443

模拟的 HTTPS 服务,可以返回 Openssl 相关信息

-accept 用来指定监听的端口号

-cert -key 用来指定提供服务的 key 和证书

1
$ openssl s_server -accept 443 -cert myserver.crt -key myserver.key -www

可以将 key 和证书写到同一个文件中

1
$ cat myserver.crt myserver.key $ myserver.pem

使用的时候只提供一个参数就可以了

1
$ openssl s_server -accept 443 -cert myserver.pem -www

可以将服务器的证书保存下来

1
$ openssl s_client -connect www.google.com.hk:443 remoteserver.pem

转换成 DER 文件,就可以在 Windows 下直接查看了

1
$ openssl x509 -outform der -in remoteserver.pem -out remoteserver.cer

计算 MD5 和 SHA1

MD5 digest

1
$ openssl dgst -md5 filename

SHA1 digest

1
$ openssl dgst -sha1 filename