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,私鑰不會離開你的伺服器。
繁體中文