免費 SSL 證書可以加密訪客與你網站之間的連線,保護密碼、支付資訊和個人資料。整個過程大約 5 分鐘,不花一分錢。
速覽版:
- 開啟 gethttps.com/app/setup — 無需安裝,無需賬號
- 輸入你的域名
- 完成域名驗證(在伺服器放置檔案或新增 DNS 記錄)
- 下載證書檔案
- 安裝到伺服器(Nginx、Apache、cPanel、WordPress、IIS)
以下是完整詳細指南。
為什麼需要 SSL 證書
- 瀏覽器會把 HTTP 網站標記為”不安全” — Chrome、Firefox、Edge 都會在位址列顯示警告,訪客會離開
- Google 將 HTTPS 作為排名訊號 — 從 2014 年開始,HTTP 網站排名更低
- 沒有 HTTPS 的表單和登入會以明文傳輸資料 — 同一網路上的任何人都能讀取密碼、信用卡號和個人資訊
- HTTP 頁面可以在傳輸過程中被篡改 — ISP 和攻擊者可以注入廣告、追蹤程式碼或惡意軟體
- HTTPS 是免費的 — 沒有理由不使用
4 種獲取免費 SSL 證書的方法
| 方法 | 適合 | 安裝方式 | 自動續簽 | 耗時 |
|---|---|---|---|---|
| GetHTTPS(瀏覽器) | 所有人 — 無需安裝、無需伺服器訪問 | 手動 | 否 | 5 分鐘 |
| 主機提供商 | 帶 cPanel/Plesk 的共享主機 | 自動 | 通常是 | 2 分鐘 |
| Certbot(命令列) | 有 root 許可權的伺服器管理員 | 自動 | 是 | 10 分鐘 |
| Cloudflare(CDN) | 已使用 Cloudflare 的網站 | 自動 | 是 | 5 分鐘 |
本指南重點介紹 方法 1(GetHTTPS),因為它適用於任何環境 — 共享主機、VPS、獨立伺服器或任何可以上傳檔案的平臺。
方法 1:GetHTTPS(推薦 — 適用於所有環境)
前置條件
- 一個已註冊的域名,指向你控制的伺服器
- 以下訪問許可權之一(用於域名驗證):
- 伺服器的檔案系統 — 放置驗證檔案(HTTP-01 驗證)
- 域名的 DNS 設定 — 新增 TXT 記錄(DNS-01 驗證)
- 現代瀏覽器 — Chrome、Firefox、Edge 或 Safari
該選哪種驗證方式? HTTP-01 對大多數人更簡單。DNS-01 是獲取萬用字元證書(
*.example.com)的必選項。詳見 HTTP-01 指南和 DNS-01 指南。
步驟 1:開啟 GetHTTPS
GetHTTPS 會自動在你的瀏覽器中生成兩對金鑰:
- 賬戶金鑰 — P-256 ECDSA 金鑰對,用於標識你的 Let’s Encrypt 賬戶,簽名所有 ACME 請求
- 證書金鑰 — 你 SSL 證書的金鑰對。預設 ECDSA P-256(推薦),可選 RSA 2048
兩個金鑰都使用瀏覽器內建的 Web Crypto API 生成。它們僅存在於瀏覽器記憶體中,從不傳送到任何伺服器 — 包括 GetHTTPS 的伺服器。這是與 SSL For Free(在伺服器端生成金鑰)或 ZeroSSL(可能在伺服器端生成金鑰)相比的核心隱私優勢。
步驟 2:新增域名
輸入要保護的域名:
| 需求 | 輸入內容 | 備註 |
|---|---|---|
| 單個域名 | example.com | 最基本的設定 |
| 域名 + www | example.com + www.example.com | 大多數網站推薦 |
| 萬用字元 | *.example.com | 覆蓋所有子域名;需要 DNS-01 |
| 多個域名 | example.com + blog.example.com + shop.example.com | SAN 證書 |
提示: 輸入 example.com 後,GetHTTPS 會提示你同時新增 www.example.com(反之亦然)。大多數網站應該兩個都保護。
步驟 3:完成域名驗證
Let’s Encrypt 需要驗證你對域名的控制權。兩種方式可選:
方式 A:HTTP-01 驗證(更簡單,適合大多數人)
Let’s Encrypt 提供一個 token。你需要在伺服器上的指定 URL 放置一個檔案。
- GetHTTPS 顯示一個檔名和檔案內容(一長串 token 字串)
- 在伺服器上建立該檔案:
http://yourdomain.com/.well-known/acme-challenge/TOKEN_FILENAME - 檔案必須透過 HTTP(埠 80) 訪問 — 即使你的網站已經啟用了 HTTPS
- 在 GetHTTPS 中點選驗證
按平臺建立檔案的方法:
SSH 訪問(Linux 上的 Nginx/Apache):
# 创建目录(如果不存在)
mkdir -p /var/www/html/.well-known/acme-challenge/
# 创建验证文件 — 使用 GetHTTPS 显示的确切值
echo "GETHTTPS_显示的_TOKEN_内容" > /var/www/html/.well-known/acme-challenge/TOKEN_文件名
# 验证是否可访问
curl http://yourdomain.com/.well-known/acme-challenge/TOKEN_文件名
cPanel 檔案管理器:
- 進入檔案管理器 → 導航到
public_html - 建立資料夾
.well-known→ 在其中建立acme-challenge - 用 token 檔名建立新檔案,貼上 token 內容
- 確保檔案許可權為 644(可被 Web 伺服器讀取)
FTP:
- 透過 FTP 連線到網站根目錄
- 導航到(或建立)
.well-known/acme-challenge/ - 上傳包含 token 內容的文字檔案
常見問題: 某些 Web 伺服器預設不提供
.well-known目錄的檔案。如果返回 404,檢查伺服器配置。Nginx 可能需要在配置中新增location ~ /\.well-known { allow all; }。
方式 B:DNS-01 驗證(萬用字元證書必選)
在域名的 DNS 設定中新增一條 TXT 記錄。
- GetHTTPS 顯示一個記錄名(如
_acme-challenge.example.com)和記錄值(一長串雜湊值) - 去你的 DNS 提供商新增 TXT 記錄
- 等待 DNS 傳播(通常 1-5 分鐘)
- 在 GetHTTPS 中點選驗證
DNS 提供商速查表:
| 提供商 | 在哪裡新增 TXT 記錄 | TTL 設定 |
|---|---|---|
| Cloudflare | DNS → 記錄 → 新增記錄 → 型別:TXT | 自動 |
| AWS Route 53 | 託管區域 → 你的域名 → 建立記錄 → TXT | 300 |
| GoDaddy | DNS 管理 → 新增 → 型別:TXT | 1 小時 |
| Namecheap | 域名列表 → 管理 → 高階 DNS → 新增新記錄 → TXT | 自動 |
| Google Domains | DNS → 自定義記錄 → 管理 → 建立新記錄 → TXT | 自動 |
| DigitalOcean | 網路 → 域名 → 你的域名 → 新增記錄 → TXT | 30 |
預檢驗證(GetHTTPS 獨有功能)
在提交給 Let’s Encrypt 之前,GetHTTPS 會透過 Google 的 DNS-over-HTTPS API 從公網預檢你的驗證配置。這能發現以下錯誤:
- 檔案內容或許可權錯誤
- 埠 80 上檔案不可訪問
- DNS 記錄尚未傳播
- 防火牆阻止了請求
- Cloudflare 代理攔截了驗證請求
預檢失敗時,GetHTTPS 會告訴你具體問題 — 讓你在浪費速率限制次數之前修復。
這是其他瀏覽器工具沒有的功能。 SSL For Free 和 ZeroSSL 直接提交給 CA,出錯後你才知道。
步驟 4:下載證書檔案
驗證透過後,Let’s Encrypt 簽發證書。GetHTTPS 提供四個檔案:
| 檔案 | 內容 | 用途 |
|---|---|---|
privkey.pem | 你的私鑰 — 務必保密! | 所有伺服器都需要 |
cert.pem | 你的 SSL 證書(僅終端實體) | Apache 等部分配置 |
chain.pem | Let’s Encrypt 的中間 CA 證書 | Apache 等部分配置 |
fullchain.pem | cert.pem + chain.pem 合併 | Nginx 和大多數伺服器 |
下載全部四個檔案。 不同伺服器需要不同的組合 — 四個都有就能適配所有平臺。
安全提醒: 妥善保管
privkey.pem。任何擁有此檔案的人都可以冒充你的網站。不要透過郵件傳送,不要提交到 Git,不要放在公開目錄。
步驟 5:安裝到伺服器
選擇你的平臺:
| 平臺 | 安裝指南 | 需要的檔案 |
|---|---|---|
| Nginx | 完整指南 → | fullchain.pem + privkey.pem |
| Apache | 完整指南 → | cert.pem + chain.pem + privkey.pem |
| cPanel | 完整指南 → | 貼上三個檔案的內容 |
| WordPress | 完整指南 → | 取決於主機(cPanel/Nginx/Apache) |
| Windows IIS | 完整指南 → | 需先轉換為 PFX 格式 |
| Docker | 完整指南 → | 掛載 fullchain.pem + privkey.pem |
快速安裝 — Nginx:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=63072000" always;
root /var/www/html;
index index.html;
}
sudo nginx -t && sudo systemctl reload nginx
快速安裝 — Apache:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/cert.pem
SSLCertificateKeyFile /etc/ssl/privkey.pem
SSLCertificateChainFile /etc/ssl/chain.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder off
DocumentRoot /var/www/html
</VirtualHost>
sudo apachectl configtest && sudo systemctl reload apache2
步驟 6:設定 HTTP 到 HTTPS 重新導向
強制所有流量使用加密連線。沒有重新導向的話,透過 http:// 訪問的使用者無法享受證書的保護。
Nginx:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
完整重新導向指南(含 www/非 www、代理場景、故障排除)→
步驟 7:驗證一切正常
瀏覽器檢查:
- 訪問
https://yourdomain.com - 點選鎖頭圖示 → “證書”或”連線是安全的”
- 確認:簽發者為 “Let’s Encrypt”,約 90 天后過期,域名匹配
命令列檢查:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
線上檢查: 在 SSL Labs 測試中輸入域名,獲得詳細報告。
檢查混合內容: 開啟瀏覽器開發者工具(F12)→ Console 標籤,檢視 “Mixed Content” 警告。如何修復混合內容 →
續簽
Let’s Encrypt 證書在 90 天後過期。在第 60 天之前續簽,留出安全餘量。
用 GetHTTPS 續簽(手動):
- 再次訪問 gethttps.com/app/setup
- 重新輸入域名並完成新的驗證
- 替換伺服器上的證書檔案
- 過載 Web 伺服器(
sudo systemctl reload nginx)
用 Certbot 續簽(自動): 想要零干預續簽的話,在伺服器上安裝 Certbot。很多團隊用 GetHTTPS 獲取第一張證書,用 Certbot 處理後續自動續簽。
方法 2:主機提供商(可用時最簡單)
很多主機包含免費 SSL:
| 主機 | 如何啟用 | 自動續簽 |
|---|---|---|
| Hostinger | hPanel → 安全 → SSL | ✅ AutoSSL |
| SiteGround | Site Tools → 安全 → SSL 管理器 | ✅ |
| Bluehost | 我的網站 → 安全 → SSL | ✅ |
| Namecheap | cPanel → SSL/TLS 狀態 | ✅ AutoSSL |
| DigitalOcean | 無內建 — 使用 GetHTTPS 或 Certbot | ❌ |
| AWS | ACM 用於負載均衡器,Certbot 用於 EC2 | ✅(ACM) |
如果主機提供免費 SSL,直接用 — 這是最簡單的方式。如果沒有(或需要更多控制權),用 GetHTTPS。
方法 3:Certbot(伺服器管理員)
Certbot 是一個命令列工具,可以在伺服器上自動化 Let’s Encrypt 證書。需要 root 許可權。
# 安装(Ubuntu)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# 获取证书 + 自动配置 Nginx
sudo certbot --nginx -d example.com -d www.example.com
方法 4:Cloudflare(基於代理的 SSL)
使用 Cloudflare 作為 CDN 時,Universal SSL 免費包含。但要注意:Cloudflare SSL 意味著你的流量在 Cloudflare 邊緣節點解密,而不是在你的伺服器上。這對你合適嗎?→
故障排除
驗證檔案返回 404
- 檢查路徑 — 檔案必須位於
/.well-known/acme-challenge/TOKEN,不能在子目錄中 - 檢查許可權 — 檔案必須可被 Web 伺服器讀取(chmod 644)
- Nginx — 如果配置阻止了點檔案,新增
location ~ /\.well-known { allow all; } - Cloudflare — HTTP-01 驗證期間臨時切換 DNS 為”僅 DNS”(灰色雲朵)
- cPanel — 確保
.well-known未被隱藏 — 有些檔案管理器會隱藏點目錄
DNS 記錄未找到
- 再等一會 — 某些 DNS 提供商需要 5-15 分鐘傳播
- 檢查記錄名 — 應該是
_acme-challenge(是否自動追加了域名取決於提供商)。GetHTTPS 的預檢會確認。 - 檢查記錄型別 — 必須是 TXT,不是 CNAME 或 A
- 手動驗證:
dig TXT _acme-challenge.yourdomain.com +short
“請求過多” / 速率限制錯誤
Let’s Encrypt 允許每個註冊域名每週 50 張證書。達到限制時等一週重試,或使用預備環境測試。預檢可以避免浪費驗證次數。
瀏覽器安裝後仍顯示”不安全”
- 證書未安裝 — 檢查伺服器配置是否指向正確檔案
- 混合內容 — 頁面載入了 HTTP 資源。修復指南 →
- 重新導向未生效 — HTTP 流量未重新導向到 HTTPS。重新導向指南 →
- 證書過期 — 檢查過期時間 →
“證書鏈不完整”錯誤
你在 Nginx 中使用了 cert.pem 而不是 fullchain.pem,或者 Apache 中缺少 SSLCertificateChainFile。伺服器需要中間證書來證明信任鏈。
為什麼選 GetHTTPS?
| 特性 | GetHTTPS | ZeroSSL | SSL For Free | Certbot |
|---|---|---|---|---|
| 安裝 | 無(瀏覽器) | 無(網頁) | 無(網頁) | 需要命令列安裝 |
| 私鑰 | 瀏覽器生成(Web Crypto) | ⚠️ 可能在伺服器生成 | ⚠️ 在伺服器生成 | 在伺服器生成 |
| 免費證書限制 | 無限 | 3 張 | 3 張 | 無限 |
| 免費萬用字元 | ✅ | ❌(付費) | ❌ | ✅ |
| 自動續簽 | ❌ | ❌ | ❌ | ✅ |
| 預檢驗證 | ✅ | ❌ | ❌ | ❌ |
| Open source | No | No | No | Yes (Apache 2.0) |
| 直連 Let’s Encrypt | ✅ | 透過 ZeroSSL | 透過 ZeroSSL | ✅ |
常見問題
真的能免費獲取 SSL 證書嗎?
可以。Let’s Encrypt 是一個非營利憑證授權機構,由 Mozilla、Google、EFF 等支援。它簽發免費的域名驗證(DV)證書 — 與很多公司花 50-200 美元/年購買的證書型別相同。超過 3 億個網站使用 Let’s Encrypt,全球 CA 市場份額 63.9%。
免費 SSL 證書和付費的一樣安全嗎?
一樣。所有 SSL 證書 — 免費或付費 — 使用相同的 TLS 加密。Let’s Encrypt 的免費 DV 證書與 DigiCert 500 美元的 EV 證書提供完全相同的加密強度。唯一的區別是驗證級別(CA 驗證你身份的程度),不是加密。詳細對比 →
免費 SSL 證書有效期多長?
Let’s Encrypt 證書有效期 90 天。這是故意設計的 — 限制金鑰洩露時的損害範圍並鼓勵自動化。在第 60 天續簽以留出安全餘量。注意:到 2029 年,所有證書的有效期將縮短至 47 天。
需要 SSH/root 許可權嗎?
使用 GetHTTPS 不需要。你只需要能夠:
- 在 Web 伺服器上放置檔案(透過 FTP、cPanel 檔案管理器或任何方式)— 用於 HTTP-01
- 新增 DNS 記錄(透過域名註冊商或 DNS 提供商)— 用於 DNS-01
能免費獲取萬用字元證書嗎?
可以。GetHTTPS 透過 DNS-01 驗證支援萬用字元證書(*.example.com)。這是很多競品(ZeroSSL、SSL For Free)限制為付費功能的特性。你需要訪問域名的 DNS 設定。
一張證書能保護多個域名嗎?
可以。在 GetHTTPS 中輸入所有域名 — 每張證書最多 100 個名稱。這會建立一個 SAN(多域名)證書。每個域名需要單獨的驗證。
HTTP-01 和 DNS-01 驗證有什麼區別?
HTTP-01: 在伺服器上放置一個檔案。更簡單,適用於單個域名。需要埠 80 開放。 DNS-01: 新增 DNS TXT 記錄。萬用字元證書必選。即使埠 80 被封也能用。 HTTP-01 詳細指南 → | DNS-01 指南 →
證書過期會怎樣?
瀏覽器顯示全屏安全警告(“您的連線不安全”)。訪客無法安全訪問你的網站,搜尋引擎可能會從索引中移除你的頁面。如何檢查過期時間 → | 如何續簽 →
能從 GetHTTPS 切換到 Certbot(或反過來)嗎?
可以。證書檔案是標準 PEM 格式。你可以用 GetHTTPS 生成第一張證書,之後安裝 Certbot 自動續簽。或者長期使用 Certbot,在需要快速重新簽發而不訪問伺服器時切換到 GetHTTPS。兩個工具互不衝突。