安装 SSL 证书后,你需要验证它是否正常工作——正确的证书、完整的链、现代 TLS、无错误。以下是每项检查的最佳工具。
在线工具
SSL Labs Server Test(最全面)
URL: ssllabs.com/ssltest
SSL 测试的行业标准。输入域名即可获得 A+ 到 F 评级的详细报告。
检查内容:
- 证书有效性和链完整性
- 协议支持(TLS 1.0/1.1/1.2/1.3)
- 密码套件强度和顺序
- 已知漏洞(POODLE、Heartbleed、DROWN、ROBOT)
- HSTS 配置
- OCSP Stapling
- DNS CAA 记录
- 证书透明度
目标: 评级 A+(要求 TLS 1.2+、AEAD 密码、长 max-age 的 HSTS)
使用时机: 初始设置后、配置变更后,定期检查(每月)。
SSL Shopper SSL Checker
URL: sslshopper.com/ssl-checker
专注于证书有效性和链的快速检查。
检查内容:
- 证书正确安装
- 链完整(中间证书存在)
- 证书与域名匹配
- 过期日期
使用时机: 快速的”是否正常工作?“检查——比 SSL Labs 更快。
crt.sh(证书透明度搜索)
URL: crt.sh
搜索证书透明度日志中为某域名签发的所有证书。
使用时机: 监控未授权证书、验证你的证书已被记录、查看签发历史。
Why No Padlock
URL: whynopadlock.com
扫描特定页面的混合内容——HTTPS 页面上的 HTTP 资源。
使用时机: 锁头图标显示警告或虽有有效证书但缺失时。
命令行工具
OpenSSL 快速检查
# Check if HTTPS works at all
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Verify return code"
# 0 (ok) = good
# Show certificate expiry
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate
# Show full certificate details
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -text
# Check TLS version negotiated
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Protocol"
# Test specific TLS version
echo | openssl s_client -connect yourdomain.com:443 -tls1_3 2>/dev/null | grep "Protocol"
curl 快速 HTTPS 测试
# Basic HTTPS check
curl -I https://yourdomain.com
# Show certificate info
curl -vI https://yourdomain.com 2>&1 | grep -E 'subject:|issuer:|expire'
# Check redirect from HTTP
curl -ILs http://yourdomain.com | grep -E '^HTTP|^Location'
nmap 密码套件枚举
nmap --script ssl-enum-ciphers -p 443 yourdomain.com
显示服务器支持的所有密码套件,按 TLS 版本分组。
何时检查什么
| 时机 | 检查内容 | 工具 |
|---|---|---|
| 安装证书后 | 链完整、域名匹配 | SSL Shopper(快速) |
| 配置变更后 | 全面审计(评级、密码、漏洞) | SSL Labs(全面) |
| 每月 | 过期临近 | 监控脚本 |
| 迁移后 | 混合内容 | Why No Padlock |
| 持续 | 未授权证书 | crt.sh / CT 监控 |
| 调试错误 | 连接详情 | OpenSSL s_client |
解读 SSL Labs 评级
| 评级 | 含义 | 常见问题 |
|---|---|---|
| A+ | 优秀 | 有长 max-age 的 HSTS |
| A | 良好 | 缺少 HSTS 或 max-age 较短 |
| B | 尚可但需改进 | 旧密码套件、启用了 TLS 1.0/1.1 |
| C | 配置薄弱 | 脆弱密码、无前向保密 |
| F | 严重问题 | 已知漏洞、证书过期 |
| T | 证书不受信任 | 自签名、域名错误、链不完整 |
常见问题
应该多久测试一次?
每次 SSL 相关变更后,以及至少每月作为监控的一部分。SSL Labs 结果缓存几小时——添加 &clearCache=on 强制全新扫描。
使用 SSL Labs 安全吗?会暴露我的站点吗?
安全的。SSL Labs 以与任何浏览器相同的方式连接你的服务器。它不修改任何东西或暴露漏洞。结果默认公开——如果你希望隐私,勾选”Do not show the results on the boards”。
我的站点在 SSL Labs 得 A 但仍显示”不安全”
SSL Labs 评级覆盖服务器的 TLS 配置。浏览器中的”不安全”还可能来自:混合内容(用 Why No Padlock 检查)、缺少从 HTTP 的重定向,或直接通过 HTTP 访问。这些是页面级问题,不是服务器级问题。
能自动化 SSL 测试吗?
SSL Labs 有免费 API:api.ssllabs.com/api/v3/analyze?host=yourdomain.com。你可以将其集成到 CI/CD 或监控管道中。对于简单检查,在 cron 脚本中使用 OpenSSL 命令。