第 31 章:SSL 憑證與 HTTPS 完整指南
第 31 章:SSL 憑證與 HTTPS 完整指南

HTTPS 是什麼?
HTTPS(HyperText Transfer Protocol Secure) 是 HTTP 的加密版本,透過 SSL/TLS 憑證 在瀏覽器和伺服器之間建立加密連線。它確保使用者與網站之間傳輸的資料不會被第三方攔截、竄改或偽造。
HTTP → http://example.com (明文傳輸,不安全)
HTTPS → https://example.com (加密傳輸,安全)
關鍵數據: 截至 2026 年,Google Chrome 中超過 95% 的網頁載入都是透過 HTTPS 進行的。非 HTTPS 網站會在瀏覽器中顯示「不安全」警告。
HTTPS 對 SEO 的影響
Google 的排名信號
自 2014 年起,HTTPS 被 Google 正式確認為排名因素。雖然權重不高(Google 比喻為「tiebreaker」級別),但在 AI 搜尋時代其重要性持續上升:
| 面向 | 影響 |
|---|---|
| 直接排名 | 同等條件下,HTTPS 網站排名優於 HTTP |
| 使用者信任 | 瀏覽器「安全鎖頭」圖標提高點擊率(CTR) |
| 數據完整性 | 確保 Google Analytics、廣告追蹤數據準確 |
| HTTP/2 支援 | 大部分瀏覽器僅在 HTTPS 上啟用 HTTP/2,大幅提升載入速度 |
| AMP / PWA | 許多現代網頁技術要求 HTTPS 才能運作 |
安全鎖頭的 CTR 影響
研究顯示:瀏覽器地址欄的 🔒 安全鎖頭能顯著影響點擊行為。顯示「不安全」警告的網站有 40-60% 的訪客會立即離開。
SSL / TLS 憑證的運作原理
使用者瀏覽器 網站伺服器
│ │
│── (1) 請求建立安全連線 ────→│
│←─ (2) 傳送 SSL 憑證 ───────│
│── (3) 驗證憑證有效性 ────→│
│←─ (4) 協商加密金鑰 ────→│
│── (5) 加密資料傳輸 ────→│
- 瀏覽器請求安全連線
- 伺服器發送 SSL 憑證(含公鑰、域名、發證機構資訊)
- 瀏覽器驗證憑證是否有效(未過期、由信任機構簽發、域名匹配)
- 雙方協商對稱加密金鑰
- 此後所有資料均以加密傳輸
SSL 憑證的三種類型
1. DV(Domain Validation,域名驗證)
- 驗證範圍: 僅驗證域名控制權
- 發證時間: 數分鐘至數小時
- 適用場景: 個人部落格、小型網站、測試環境
- 費用: 免費(Let’s Encrypt)至 $10/年
- 瀏覽器顯示: 🔒 安全鎖頭
2. OV(Organization Validation,組織驗證)
- 驗證範圍: 域名 + 組織合法性
- 發證時間: 1-3 個工作天
- 適用場景: 企業官網、中型商業網站
- 費用: $50-200/年
- 瀏覽器顯示: 🔒 + 組織名稱
3. EV(Extended Validation,擴展驗證)
- 驗證範圍: 域名 + 嚴格組織審查
- 發證時間: 3-10 個工作天
- 適用場景: 銀行、金融機構、大型電商
- 費用: $200-1000/年
- 瀏覽器顯示: 🏦 公司名稱(部分瀏覽器已淡化)
2026 年趨勢: EV 憑證的視覺優勢已被大幅削弱,多數瀏覽器已不再特別展示公司名稱。除非行業合規要求,DV 憑證已足夠滿足 SEO 和安全性需求。
Let’s Encrypt:免費 SSL 憑證方案
Let’s Encrypt 是全球最大的免費 SSL 憑證發行機構,由非營利組織 ISRG 營運。截至 2026 年,已發行超過 3 億個憑證。
優點
- ✅ 完全免費
- ✅ 自動化部署與續期
- ✅ 全球瀏覽器信任
- ✅ DV 級別驗證
限制
- 憑證有效期僅 90 天(需自動續期)
- 僅提供 DV 驗證(無 OV/EV)
- 不支援 Wildcard 以外的多域名(有速率限制)
常用部署工具
- Certbot — EFF 官方工具,支援 Apache、Nginx、各種 Linux 發行版
- acme.sh — 純 Shell 腳本,輕量高效
- Caddy — 內建自動 HTTPS,零配置
- 主機面板 — cPanel、Plesk 多已內建 Let’s Encrypt 支援
從 HTTP 遷移到 HTTPS 的完整步驟
第一步:獲取並安裝 SSL 憑證
選擇憑證類型後,在你的網頁伺服器(Apache / Nginx / IIS)上安裝憑證。
第二步:強制 HTTPS 重定向
# Apache .htaccess
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Nginx
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
第三步:更新內部資源
將所有內部連結、圖片、CSS、JS 的路徑從 http:// 改為 https:// 或使用協議相對 URL:
<!-- 改前 -->
<img src="http://example.com/logo.png">
<!-- 改後(推薦) -->
<img src="https://example.com/logo.png">
<!-- 改後(次選 — 協議相對) -->
<img src="//example.com/logo.png">
第四步:更新 Canonical 標籤
<link rel="canonical" href="https://example.com/page" />
第五步:更新 Sitemap
確保 Sitemap 中的��有 URL 都是 HTTPS 版本。
第六步:設定 HSTS(HTTP Strict Transport Security)
HSTS 是一項安全政策機制,告訴瀏覽器「以後必須用 HTTPS 來訪問這個網站」:
# Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
| 參數 | 說明 |
|---|---|
max-age=31536000 |
有效時間(秒),此例為一年 |
includeSubDomains |
也適用於所有子域名 |
preload |
申請加入瀏覽器的 HSTS Preload 清單 |
第七步:更新 Google Search Console
- 新增 HTTPS 版本的網站資源
- 提交新的 HTTPS Sitemap
- 使用「地址變更」工具通知 Google
第八步:更新第三方服務
- Google Analytics 網址設定
- 社群媒體分享連結
- 廣告著陸頁 URL
- CDN 設定
- email 簽名檔中的連結
常見 HTTPS 遷移問題與解決
問題 1:混合內容(Mixed Content)警告
這是最常見的遷移問題——HTTPS 頁面中載入了 HTTP 資源(圖片、CSS、JS、iframe):
⚠️ Mixed Content: The page at 'https://example.com' was loaded over HTTPS,
but requested an insecure image 'http://cdn.example.com/photo.jpg'.
解決方式:
– 更新所有資源 URL 為 HTTPS
– 使用瀏覽器開發者工具的 Security 面板檢查 Mixed Content
– 加入 CSP(Content Security Policy)Header:upgrade-insecure-requests
問題 2:SSL 憑證鏈不完整
部分瀏覽器報錯「憑證不受信任」��通常是因為中繼憑證未正確安裝。
解決方式: 確保伺服器設定中包含完整的憑證鏈(伺服器憑證 + 中繼憑證 + 根憑證)
問題 3:301 重定向鏈
http://example.com → https://example.com(正確)
http://www.example.com → https://www.example.com → https://example.com(多一跳)
解決方式: 將所有版本直接 301 重定向到最終的 HTTPS canonical URL,不要經過中間跳轉。
問題 4:CDN 與 HTTPS 不相容
部分舊版 CDN 不支援客製化憑證或需要額外設定。
解決方式: 選用支援免費 SSL 的 CDN(Cloudflare、CloudFront 等),確認 CDN 層和源站都正確配置 HTTPS。
SSL 憑證健康檢查清單
| 檢查項目 | 工具 / 方法 |
|---|---|
| 憑證是否有效、未過期 | SSL Labs、瀏覽器點擊鎖頭圖標 |
| 憑證是否涵蓋所有域名 | 檢查 www / 裸域 / 子域名 |
| 是否有 Mixed Content | Chrome DevTools → Security 面板 |
| HSTS 是否設定 | Security Headers 檢測工具 |
| 301 重定向是否正確 | 瀏覽器開發者工具 Network 面板 |
| Sitemap URL 是否全為 HTTPS | 手動檢查 Sitemap 檔案 |
| Search Console 是否包含 HTTPS 資源 | GSC 後台確認 |
| 憑證自動續期是否正常 | 檢查 Cron job / Certbot timer |
總結檢查清單
| 任務 | 說明 |
|---|---|
| ☐ 取得並安裝 SSL 憑證 | Let’s Encrypt 免費方案為首選 |
| ☐ 設定 301 重定向 | HTTP → HTTPS(所有版本) |
| ☐ 更新全站資源 URL | 圖片、CSS、JS、iframe 全部 HTTPS |
| ☐ 更新 canonical 標籤 | 指向 HTTPS 版本 |
| ☐ 更新 Sitemap | 所有 URL 為 HTTPS |
| ☐ 設定 HSTS | 加入 Strict-Transport-Security Header |
| ☐ 更新 Search Console | 新增 HTTPS 資源,提交新 Sitemap |
| ☐ 更新第三方服務 | GA、廣告、社群媒體、CDN |
| ☐ 設定憑證自動續期 | Cron job 或 Certbot auto-renewal |
| ☐ 監控憑證到期時間 | 設定過期提醒(最佳是到期前 30 天) |
| ← 第 30 章:Canonical 標記與重複內容處理 | 回索引 | 第 32 章:301/302 轉址與 HTTP 狀態碼 → |
延伸閱讀:網站 SEO 學習與操作手冊
0 comments