IP SSL 証明書

コマンド 1 行で、サーバーの IP アドレス用に Let's Encrypt の無料で信頼された HTTPS 証明書を取得。ドメイン不要、自動インストール・自動更新。

サーバー上で root として実行

bash <(curl -sL ipk.me/ssl) -l ja 216.73.217.175
-l jaレポートの言語(このページに合わせる)
-4 / -6IPv4 または 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)で検証
--stagingLet'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 アドレスだけで、秘密鍵はサーバーから出ません。
日本語