IP SSL 憑證
一行指令為伺服器 IP 申請免費、受信任的 Let's Encrypt HTTPS 憑證,無需網域,自動安裝、自動續期。
在伺服器上以 root 執行
bash <(curl -sL ipk.me/ssl) -l zh-TW 216.73.217.175 -l zh-TW | 報告語言(跟隨本頁) |
-4 / -6 | 只測 IPv4 或 IPv6 |
-w /var/www/html | 透過網站根目錄驗證,不臨時佔用 80 埠 |
-r "systemctl reload nginx" | 每次續期後執行的指令(預設:重新載入正在執行的 nginx / Apache / Caddy) |
-d /etc/ssl/ipk | 憑證檔案的安裝目錄 |
-y | 停止佔用 80 埠的 Web 服務前不詢問 |
--alpn | 用 443 埠驗證(TLS-ALPN-01),不用 80 埠 |
--staging | 使用 Let's Encrypt 測試環境(憑證不受信任,用於試用) |
203.0.113.10 2001:db8::10 | 要申請的 IP。不寫時用伺服器出口 IPv4 / IPv6;伺服器有更多公網 IP 時會讓你選擇 |
原理
- 內建精簡 ACME 用戶端(只需 bash、openssl、curl,臨時驗證伺服器用 python3),按 Let's Encrypt 短期憑證設定申請:IP 憑證有效期約 6 天,每 3 天自動續期。
- 透過 80 埠驗證(HTTP-01),IP 的 80 埠必須能從公網存取;簽發前 ipk.me 會從外部檢測。
- 80 埠被封?443 埠也可以(TLS-ALPN-01):加 --alpn;只有 443 可達時也會自動改用。IP 憑證不能用 DNS 驗證。
- 簽發後輸出憑證和私鑰路徑、有效期;腳本副本保存在 /etc/ssl/ipk,並在 crontab 加一個每天執行的續期排程。
- 如果 nginx、Apache 或 Caddy 佔用了 80 / 443 埠,簽發和續期時會停止它幾秒鐘;用 -w 可以避免。
- IPv4 和 IPv6 簽在同一張憑證裡。內網和 CGNAT 位址無法申請。中國大陸的雲端伺服器未備案時 80 埠常被封鎖。
- 適用於 Linux。只有 IP 位址會傳送給 ipk.me,私鑰不會離開你的伺服器。