安裝 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 命令。