IP SSL 証明書
コマンド 1 行で、サーバーの IP アドレス用に Let's Encrypt の無料で信頼された HTTPS 証明書を取得。ドメイン不要、自動インストール・自動更新。
サーバー上で root として実行
bash <(curl -sL ipk.me/ssl) -l ja 216.73.217.175 -l ja | レポートの言語(このページに合わせる) |
-4 / -6 | IPv4 または IPv6 のみ |
-w /var/www/html | ポート 80 の一時サーバーではなく、Web サーバーのドキュメントルートで検証 |
-r "systemctl reload nginx" | 更新のたびに実行するコマンド(既定:起動中の nginx / Apache / Caddy をリロード) |
-d /etc/ssl/ipk | 証明書ファイルのインストール先 |
-y | ポート 80 の Web サーバーを停止する前に確認しない |
--alpn | ポート 80 ではなくポート 443(TLS-ALPN-01)で検証 |
--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 は 1 枚の証明書に入ります。プライベートアドレスと CGNAT アドレスは取得できません。中国本土では ICP 登録のないサーバーのポート 80 がよく遮断されます。
- Linux で動作します。ipk.me に送られるのは IP アドレスだけで、秘密鍵はサーバーから出ません。