# 使用 SSLScan 檢查 TLS 連線安全性 > 一步步帶你安裝、執行、讀懂報告,並附上常用指令與修正建議。 [TOC] --- ## 1. 什麼是 SSLScan? **SSLScan** 是一款以 OpenSSL 為核心的掃描工具,用來列出伺服器支援的 **TLS/SSL 協議版本**、**密碼套件(Cipher Suites)**、**證書資訊** 與部分安全設定(例如是否允許不安全的 TLS 壓縮或舊協議)。 **用途** - 確認是否仍支援 **過時協議**(如 SSLv3、TLS 1.0/1.1)。 - 檢查是否啟用 **弱密碼套件**(如 RC4、3DES)或缺少 **前向保密(PFS)**。 - 快速取得 **憑證有效期/簽章演算法/金鑰長度** 等資訊。 --- ## 2. 安裝 SSLScan ### 2.1 Windows(建議) 1. 到官方 GitHub 下載 **Release**:<https://github.com/rbsec/sslscan/releases> 2. 下載對應版本的 zip,**解壓縮**到任一目錄(例如 `C:\tools\sslscan\`)。 3. 在該目錄**開啟 PowerShell / CMD**。 :::warning :bulb: **Windows 便捷下載**:直接到 **Release** 頁下載編譯好的檔案,不需自行編譯。 ::: ### 2.2 macOS(Homebrew) ```bash brew install sslscan ``` ### 2.3 Ubuntu / Debian ```bash sudo apt-get update sudo apt-get install -y sslscan ``` ### 2.4 Fedora / CentOS / RHEL ```bash sudo dnf install -y sslscan # 或 sudo yum install -y sslscan(舊版) ``` --- ## 3. 快速開始(Quick Start) > **語法重點**:`sslscan [options] host:port` > **不要**在 host 前加上 `http://` 或 `https://`。 ### 3.1 基本掃描(443/TLS) ```powershell # Windows (PowerShell/CMD) .\sslscan.exe www.ettoday.net:443 ``` ```bash # macOS / Linux sslscan www.ettoday.net:443 ``` ### 3.2 常用選項 - `--no-failed`:只顯示成功(可用)的協議/密碼套件,清爽易讀。 - `--show-certificate`:輸出伺服器憑證的詳情(Subject/Issuer/Validity/Algorithm/Key Size)。 - `--starttls [smtp|imap|pop3|ftp|ldap|xmpp|postgres]`:針對 StartTLS 服務掃描。 - `--xml=out.xml`:將結果輸出為 XML(方便機器解析與 CI 報表)。 - `--timeout=<sec>`:設定逾時秒數(避免掃描卡住)。 - `--no-colour`:取消彩色輸出(記錄到檔案時更乾淨)。 **範例:** ```bash sslscan --no-failed --show-certificate --xml=scan-result.xml www.example.com:443 ``` --- ## 4. 範例畫面與輸出說明 下圖為執行結果示意(HackMD 圖片會依你帳號空間保存):    --- ## 5. 如何解讀 SSLScan 報告 ### 5.1 協議版本(Protocols) 你會看到類似以下區段: ``` SSLv2 not offered SSLv3 not offered TLSv1.0 offered TLSv1.1 offered TLSv1.2 offered TLSv1.3 offered ``` - **建議**:在金融、醫療、電商等敏感業務情境,**停用 TLS 1.0/1.1**,只保留 **TLS 1.2/1.3**。 ### 5.2 密碼套件(Cipher Suites) 每個協議下會列出支援的 Cipher,例如: ``` TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 128 bits TLSv1.2 (PFS) Preference ``` - **重點**: - **ECDHE-** 前綴代表 **前向保密(PFS)**,優先選用。 - **-GCM-** 表示使用 AEAD 模式(建議),取代舊式 CBC。 - **RC4**、**3DES**、**EXPORT**、**NULL** 等應 **全面禁用**。 ### 5.3 證書資訊(Certificate) 以 `--show-certificate` 會顯示憑證:主旨(Subject)、簽發者(Issuer)、有效期(Not Before/After)、簽章演算法(如 `SHA256withRSA`)、金鑰長度(如 `RSA 2048/3072/4096`、`EC P-256`)。 - **建議**: - 使用 **SHA-256** 或以上的簽章演算法。 - RSA **2048 位元以上**;或使用 **橢圓曲線(EC P-256/P-384)**。 - 憑證有效期管理妥善,避免過期。 ### 5.4 顏色提示(若啟用彩色輸出) - <span style="color:green">綠色</span>:安全、可用 - <span style="color:#FFD700">黃色</span>:需注意(相容性/潛在風險) - <span style="color:#f00">紅色</span>:不安全,應停用 > 備註:實際色彩與判斷門檻依版本而異,請以工具輸出為準。 --- ## 6. 常見情境與指令範例 ### 6.1 掃描非 443 連接埠 ```bash sslscan api.example.com:8443 ``` ### 6.2 掃描 StartTLS(以 SMTP 為例) ```bash sslscan --starttls smtp mail.example.com:25 ``` ### 6.3 只看成功項目 + 顯示憑證 ```bash sslscan --no-failed --show-certificate www.example.com:443 ``` ### 6.4 匯出 XML 報表 ```bash sslscan --xml=report.xml www.example.com:443 ``` --- ## 7. 常見問題(FAQ) **Q1:我用 `https://` 當主機名,為什麼掃描不通?** A:`sslscan` 參數是 `host:port`,**不要**加協議字首。正確示例:`sslscan www.example.com:443`。 **Q2:掃描只寫主機不寫埠可以嗎?** A:建議明確指定埠。例如 HTTPS 用 `:443`,否則在部分版本或服務會誤判。 **Q3:只看到 TLS1.0/1.1,該怎麼辦?** A:調整伺服器與反向代理的 TLS 設定(nginx/Apache/Load Balancer),啟用 TLS1.2/1.3,並移除過時協議與弱密碼。 --- ## 8. 加固建議(Remediation) 1. **停用舊協議**:關閉 **SSLv3、TLS1.0、TLS1.1**。 2. **優先 PFS + AEAD**:優先採用 `ECDHE + AES-GCM/CHACHA20-POLY1305`。 3. **憑證安全**:使用 **SHA-256+**、**RSA 2048+** 或 **EC P-256+**,設定自動續期提醒。 4. **禁用壓縮**:避免啟用 TLS 壓縮(可防 **CRIME** 類攻擊)。 5. **一致的 Cipher 排序**:在負載平衡器/伺服器設定明確列出與排序。 6. **定期掃描與 CI 整合**:將 `sslscan --xml=…` 納入管線,將弱項視為警報。 --- ## 9. 參考指令總表(Cheat Sheet) ```bash # 基本連線 sslscan example.com:443 # 只顯示成功項目 sslscan --no-failed example.com:443 # 顯示憑證細節 sslscan --show-certificate example.com:443 # 匯出 XML sslscan --xml=report.xml example.com:443 # StartTLS(SMTP) sslscan --starttls smtp mail.example.com:25 # 取消彩色輸出(記錄到檔案時更乾淨) sslscan --no-colour example.com:443 # 設定逾時 sslscan --timeout=10 example.com:443 ``` --- ## 10. 範例 > 範例: > `.\sslscan.exe https://www.ettoday.net` > **修正**:移除 `https://` 並加上埠號。 ```powershell .\sslscan.exe www.ettoday.net:443 ``` 執行後你會看到協議、密碼套件、憑證資訊等清單。 --- ###### tags: `SSLScan` `TLS` `HTTPS` `Security` `Audit`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.