页首Html代码

返回顶部

命令行 检测验证网站的 SSL证书 是否安全

有些时候,打开浏览器会提示某些https的网站不安全,但是并没有具体原因.

手动排查,比如

  • 发现日期并是否过期;

  • 发现是泛域名,是否在列表;且不支持多级域名,*只能代表一级的域名,比如 *.d.test.com 无法为 foo.bar.d.test.com 来签发证书;

  • 发现证书与域名不匹配;

  • https里面包含http内容,这个得排查网页的内容了.

  • 证书链不完整, 不如缺少中间证书;(证书被分割多份了)

  • 比如是自签名证书,非认证机构CA的证书. 但是我怎么知道?

命令行检查https的证书问题

为了排查问题,我们最好找有详细日志流水的工具,比如命令行;
可以使用
curl
openssl

  1. 提取并查看证书详细信息
    使用openssl s_client命令连接服务器并提取证书,结合x509工具解析详细信息:

1 # 提取证书并查看完整信息(包括颁发者、使用者、扩展字段等)
2 Openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null |Openssl x509 -text -noout
关键输出字段解析:

Issuer:证书颁发机构(如CN=DigiCert GlobalCAG2);
Validity:有效期(Not Before起始时间,Not After过期时间);
Subject:证书所有者(如CN=example.com);
X509v3 Extensions:扩展字段,包括Subject Alternative Name(SAN,多域名证书的域名列表)、Key Usage(密钥用途)等。
简化命令:仅查看有效期和域名信息:

1 # 查看有效期
2 Openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null |Openssl x509 -noout -dates
3
4 # 查看包含的域名(SAN字段)
5 Openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null |Openssl x509 -noout -ext subjectAltName
2. 检测证书吊销状态(OCSP 检查)
证书可能在有效期内被吊销(如私钥泄露),通过OCSP(在线证书状态协议)可验证吊销状态:

1 # 获取OCSP服务器地址
2 Openssl x509 -in cert.pem -noout -ocsp_uri # 若已保存证书文件
3
4 # 在线检测(需指定服务器域名、证书文件、中间证书文件)
5 Openssl ocsp -issuer ca-bundle.pem -cert cert.pem -url http://ocsp.example.com -header "Host=ocsp.example.com"
输出中good表示证书未被吊销,revoked表示已吊销。

  1. 测试服务器支持的加密套件
    不同加密套件的安全性差异较大,OpenSSL可列出服务器支持的所有加密套件:

1 Openssl s_client -connect example.com:443 -servername example.com -cipher 'ALL:eNULL' </dev/null 2>/dev/null | grep "Cipher is"
或使用更直观的openssl ciphers配合测试:

1 # 列出服务器支持的所有加密套件
2 Openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | grep "Cipher Suite"
输出示例:

1 Cipher Suite: TLS_AES_256_GCM_SHA384
2 Cipher Suite: TLS_CHACHA20_POLY1305_SHA256
3 Cipher Suite: TLS_AES_128_GCM_SHA256
建议优先支持AES-GCM、CHACHA20等现代加密套件,禁用RC4、DES等弱加密算法。

  1. 验证证书与私钥匹配性
    在服务器端部署证书前,需验证证书与私钥是否匹配(避免因文件混淆导致部署失败):

1 # 提取证书的公钥指纹
2 Openssl x509 -in cert.pem -noout -modulus |Openssl md5
3
4 # 提取私钥的公钥指纹(需确保私钥未加密,或输入密码)
5 Openssl rsa -in key.pem -noout -modulus |Openssl md5
若两者输出的 MD5 值相同,表明证书与私钥匹配;若不同,需重新匹配正确的文件对。

  1. 检测SSL会话复用支持
    SSL会话复用可减少握手时间,提升性能,OpenSSL可测试服务器是否支持该功能:

1 # 首次连接建立会话
2 Openssl s_client -connect example.com:443 -servername example.com -reconnect </dev/null 2>/dev/null | grep "Reused, TLSv1.3"
若输出包含Reused,说明服务器支持会话复用(如通过TLS会话票据或会话ID实现)。

参考: 使用curl/OpenSSL检测SSL证书状态的常用命令-SSL证书服务机构【Dogssl】

ssl免费证书

比如

最好选择 ACME 证书自动化的网站;

posted @ 2026-02-05 09:55  ayanmw  阅读(39)  评论(0)    收藏  举报

页脚Html代码