外观
openssl 查证书
看远端证书
bash
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates-servername 必须带,不带的话 SNI 为空,很多服务器返回默认证书或者直接拒绝。</dev/null 让它握手完就退出,不然会等输入。
只看过期时间
bash
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -enddate看握手用了什么
bash
openssl s_client -connect example.com:443 -servername example.com -tls1_3 </dev/null 2>&1 \
| grep -E 'Protocol|Cipher|subject'-tls1_3 强制用 1.3,握不上说明服务端不支持。
看本地证书文件
bash
openssl x509 -in fullchain.pem -noout -text # 全部信息
openssl x509 -in fullchain.pem -noout -dates
openssl x509 -in fullchain.pem -noout -ext subjectAltName # 证书覆盖哪些域名证书和私钥是不是一对
bash
openssl x509 -in cert.pem -noout -modulus | md5sum
openssl rsa -in key.pem -noout -modulus | md5sum
# 两个 md5 一样就是一对(RSA)ECDSA 证书用 openssl pkey -in key.pem -pubout 和 openssl x509 -in cert.pem -pubkey -noout 比公钥。
测某个端口是不是 TLS
bash
openssl s_client -connect 127.0.0.1:8443 </dev/null 2>&1 | head -5能看到 CONNECTED 然后有证书信息就是 TLS 端口;wrong version number 说明那是明文端口。