所有入門指南 快速開始

HTTP-01 驗證:工作原理與操作指南

HTTP-01 是獲取 SSL 證書時最常用的 ACME 驗證型別。憑證授權機構 (CA) 透過 HTTP 80 埠從你的 Web 伺服器獲取指定檔案來驗證域名控制權。它比 DNS-01 更簡單,但不能用於 萬用字元證書

工作原理

  1. Let’s Encrypt 給你一個 token(隨機字串)
  2. 你在 http://yourdomain.com/.well-known/acme-challenge/{token} 建立一個檔案
  3. 檔案內容是 key authorization — token 與你 ACME 賬戶金鑰指紋的組合
  4. Let’s Encrypt 從公網訪問該 URL
  5. 如果內容匹配,驗證透過,證書即被簽發

使用 GetHTTPS 時,第 1 步和第 3 步自動完成 — 你只需將螢幕上顯示的值放到伺服器上的檔案中。

如何放置驗證檔案

透過 SSH(Linux/Nginx/Apache)

# Create the directory
mkdir -p /var/www/html/.well-known/acme-challenge/

# Create the file with the exact values from GetHTTPS
echo "KEY_AUTHORIZATION_FROM_GETHTTPS" > /var/www/html/.well-known/acme-challenge/TOKEN_FROM_GETHTTPS

# Verify it's accessible
curl http://yourdomain.com/.well-known/acme-challenge/TOKEN_FROM_GETHTTPS

透過 cPanel 檔案管理器

  1. 進入 public_html
  2. 建立資料夾 .well-known → 在其中建立資料夾 acme-challenge
  3. 建立一個以 token 值命名的檔案
  4. 將 key authorization 貼上為檔案內容
  5. 確保許可權為 644(Web 伺服器可讀)

透過 FTP

  1. 連線到站點根目錄
  2. 建立 .well-known/acme-challenge/ 目錄路徑
  3. 上傳一個以 token 命名的文字檔案,內容為 key authorization

伺服器配置

某些 Web 伺服器需要額外配置才能提供 .well-known 目錄中的檔案:

Nginx

# Add to your server block if .well-known returns 404
location /.well-known/acme-challenge/ {
    root /var/www/html;
    allow all;
}

Apache

Apache 通常預設提供 .well-known 目錄。如果不行:

Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/
<Directory "/var/www/html/.well-known/acme-challenge/">
    AllowOverride None
    Options None
    Require all granted
</Directory>

Node.js / Express

app.use('/.well-known/acme-challenge', express.static('challenges'));

要求

  • 域名必須解析到你伺服器的公網 IP 地址
  • 80 埠必須開放 — Let’s Encrypt 始終透過 HTTP 驗證,而非 HTTPS
  • 響應必須返回 HTTP 200 OK
  • 不能跨域重新導向 — 同域名的 HTTP→HTTPS 重新導向可以
  • 檔案必須無需認證即可訪問(不能有 Basic Auth 或登入攔截)

何時使用 HTTP-01

場景適合 HTTP-01?
單域名證書✅ 是 — 最簡單的選項
域名 + www 證書✅ 是 — 每個名稱一次驗證
萬用字元證書(*.example.com❌ 否 — 使用 DNS-01
80 埠被封❌ 否 — 使用 DNS-01
在 Cloudflare 代理後面⚠️ 可能需要先將 DNS 切換為僅 DNS(灰色雲朵)
完全沒有伺服器訪問許可權❌ 否 — 使用 DNS-01(只需 DNS 訪問許可權)

HTTP-01 與 DNS-01 對比

HTTP-01DNS-01
操作內容在伺服器上放置檔案在 DNS 中新增 TXT 記錄
所需許可權Web 伺服器檔案系統域名 DNS 設定
埠要求80 埠開放
萬用字元支援
速度即時(檔案可訪問的前提下)1-15 分鐘(DNS 傳播)
CDN 後是否可用⚠️ 可能需要繞過 CDN✅ 始終可用
最適合大多數單域名證書萬用字元、無伺服器、CDN 場景

故障排除

驗證檔案返回 404

  • 檢查路徑是否正確 — 必須是 /.well-known/acme-challenge/TOKEN,不要多餘的斜槓
  • 檢查檔案許可權 — chmod 644
  • Nginx: 配置可能阻止了點檔案(dotfiles)。新增上述 location
  • cPanel: 檔案管理器可能隱藏了 .well-known — 啟用”顯示隱藏檔案”

檔案可訪問但驗證仍然失敗

  • 從外部網路檢查: 從另一臺機器執行 curl http://yourdomain.com/.well-known/acme-challenge/TOKEN 或使用線上工具
  • DNS 可能指向其他伺服器 — 用 dig +short yourdomain.com 確認返回的是你伺服器的 IP
  • Cloudflare 代理: 驗證期間臨時切換為僅 DNS(灰色雲朵)

80 埠被封

某些主機或防火牆會封鎖 80 埠。解決方案:

  1. 開放 80 埠(哪怕只是在驗證期間臨時開放)
  2. 改用 DNS-01 驗證 — 不需要 80 埠
  3. 聯絡主機商,要求允許 .well-known 路徑透過代理

”too many requests” 錯誤

你觸發了 Let’s Encrypt 的速率限制。等待後重試。GetHTTPS 的預檢功能會在提交前驗證檔案是否可訪問,幫助避免浪費請求次數。

常見問題

獲取證書後可以刪除驗證檔案嗎?

可以。該檔案僅在驗證時需要。證書籤發後,刪除 .well-known/acme-challenge/ 目錄及其內容即可。續簽時會建立新檔案。

檔案需要透過 HTTPS 提供嗎?

不需要。Let’s Encrypt 的 HTTP-01 驗證始終透過**明文 HTTP(80 埠)**進行,即使你的站點支援 HTTPS。同域名的 HTTP→HTTPS 重新導向會被跟隨,但初始請求始終是 HTTP。

一張證書包含多個域名時能用 HTTP-01 嗎?

可以。證書中的每個域名需要各自的驗證檔案。如果你申請 example.comwww.example.com 的證書,需要放置兩個檔案 — 每個域名一個 token。GetHTTPS 會依次處理它們。

GetHTTPS 中的”預檢”是什麼?

在向 Let’s Encrypt 提交之前,GetHTTPS 會驗證你的驗證檔案是否能從公網訪問(透過 Google 的 DNS-over-HTTPS)。這能在消耗速率限制次數之前捕獲配置錯誤 — 這是其他瀏覽器端工具所沒有的功能。

相關文章

快速開始 2026-05-08
如何獲取免費 SSL 證書(分步指南)
5 分鐘從 Let's Encrypt 獲取免費 SSL 證書 — 無需安裝軟體、無需註冊賬號。涵蓋 4 種方法、兩種驗證方式、6 個平臺的安裝教程和故障排除。
快速開始 2026-05-08
DNS-01 驗證:工作原理與操作指南
DNS-01 驗證透過在 DNS 中新增 TXT 記錄來證明域名所有權。萬用字元證書必須使用此方式。涵蓋 Cloudflare、Route 53、GoDaddy、Namecheap 等的設定方法。
快速開始 2026-05-07
如何免費獲取萬用字元 SSL 證書
使用 GetHTTPS 從 Let's Encrypt 免費獲取萬用字元 SSL 證書 (*.example.com)。僅需 DNS-01 驗證。涵蓋 Cloudflare、Route 53、GoDaddy 和 Namecheap DNS 設定。
在瀏覽器中取得免費 SSL 憑證
無需安裝,無需帳號。私鑰始終留在你的裝置上。
取得憑證