概要
- NGINX が ACME プロトコルのプレビューリリースを発表
- 新モジュール ngx_http_acme_module により証明書管理を自動化
- Rustベース の動的モジュールとして提供
- 外部ツール不要で SSL/TLS証明書 管理を簡素化
- 今後の進化とユーザーからのフィードバック重視
NGINXにおけるACMEサポートの概要
- NGINX が ACMEプロトコル のプレビューサポートを発表
- 新モジュール ngx_http_acme_module により、証明書の発行・インストール・更新をNGINX設定から直接操作可能
- NGINX-Rust SDK を活用したRust製動的モジュールとして提供
- NGINX Open Sourceユーザー向け
- NGINX One(NGINX Plus)エンタープライズ顧客向け
- 外部ツール(例: Certbot)への依存排除によるワークフローの簡素化とセキュリティ向上
- プラットフォーム依存性の低減および高い移植性・信頼性の実現
ACMEプロトコルとは
- ACME(Automated Certificate Management Environment) は、証明書の発行・検証・更新・失効を自動化する通信プロトコル
- Certificate Authority(CA) との自動連携を実現し、HTTPS化の手間を大幅削減
- ISRG によるLet’s Encryptプロジェクトの一環として2015年に登場
- ACME登場以前は、 TLS証明書の取得が手動・高コスト・エラー多発
- ACMEv2 では新たなチャレンジ方式やワイルドカード証明書対応など機能強化
NGINX ACMEワークフロー
- 4ステップ で構成される証明書管理プロセス
- ACMEサーバー設定
- 共有メモリの割り当て
- チャレンジ方式の設定
- 証明書の発行・更新
ACMEサーバーの設定
- acme_issuer ディレクティブでACMEサーバーのディレクトリURLを指定
- 例:
acme_issuer letsencrypt { uri https://acme-v02.api.letsencrypt.org/directory; # contact admin@example.test; state_path /var/cache/nginx/acme-letsencrypt; accept_terms_of_service; }
- 例:
- クライアント連絡先やモジュールデータ保存先、利用規約同意なども設定可能
共有メモリの割り当て
- acme_shared_zone ディレクティブで証明書・秘密鍵・チャレンジデータを保存
- デフォルト256K、必要に応じて拡張可能
- 例:
acme_shared_zone zone=acme_shared:1M;
チャレンジ方式の設定
- 現在は HTTP-01チャレンジ のみサポート
- ポート80でリスナーを定義し、ACMEチャレンジを処理
- 例:
server { listen 80; location / { return 404; } }
- 例:
- 将来的に TLS-ALPN や DNS-01 への対応を予定
証明書の発行・更新
- acme_certificate ディレクティブで証明書の自動発行・更新
- 対象ドメインは server_name で指定
- 例:
server { listen 443 ssl; server_name .example.com; acme_certificate letsencrypt; ssl_certificate $acme_certificate; ssl_certificate_key $acme_certificate_key; ssl_certificate_cache max=2; }
- ワイルドカード・正規表現 は未対応
- 証明書・秘密鍵情報は $acme_certificate と $acme_certificate_key 変数で取得
ACMEサポートの意義
- HTTPS普及 の加速に大きく貢献したACMEプロトコル
- 証明書管理の自動化による コスト削減 と 手作業の排除
- IoT・エッジコンピューティング 分野でのセキュリティ自動化にも寄与
- NGINXによるネイティブサポートで 将来のWebセキュリティ基盤 を強化
- 継続的な機能進化と新たなセキュリティ要件への対応
導入方法・コミュニティへの呼びかけ
- NGINX Open Source ユーザー向けに プリビルトパッケージ を提供
- NGINX One(NGINX Plus) 利用者向けにはF5サポートの動的モジュールとして配布
- 詳細は NGINX Docs 参照
- フィードバック・機能要望 はGitHub Issuesで受付
- ユーザーの声を反映し、今後も機能強化を推進