Let’s Encrypt で証明書を発行して運用するための nginx の設定

nginx.conf for Let’s Encrypt

この記事では Let’s Encrypt で証明書を発行し, nginx で利用するための設定を紹介します. Nginx をアプリケーションサーバーのためのプロキシとして利用している場合を想定して, Let’s Encrypt のための webroot を別に設定しています.

概要

Let’s Encrypt では様々な方法での認証・証明書のインストール方法がプラグインとして提供されています. Nginx 用のプラグインも開発されていますが, 現時点で experimental となっているようなので, webroot プラグインを利用するのが一般的なようです.

この記事では /var/www/letsencrypt に Let’s Encrypt の webroot プラグインによる認証のためのディレクトリを作成し, 以下のようなコマンドで証明書の発行を行えるようにすることを目標とします.

認証のためのディレクトリを分けることで, 既存の nginx の設定の root による影響を回避することが出来ます.

初めて HTTPS 証明書を発行する場合

初めて HTTPS 証明書を発行する場合, http://<domain>/.well-known/acme-challenge/ にアクセスすることで認証を行います. ここでは webroot/var/www/letsencrypt に作成するものとします.

以下の設定では, /.well-known/acme-challenge/ 以下へのアクセスの root/var/www/letsencrypt に設定しています. また /.well-known/acme-challenge/ にアクセスがあった場合 403 が返ることを防ぐために, /.well-known/acme-challenge/ へのアクセスには 404 を返しています.

HTTPS の運用を開始した後の設定

Let’s Encrypt で発行した証明書を用いて運用を開始した後も, 定期的に証明書の更新が必要です. HTTP/HTTPS 両対応のサイトを運用する場合は, 先ほどの設定で運用を継続できますが, HTTP でのアクセスを HTTPS へリダイレクトするようなサイトの場合は, 設定の変更が必要です.

証明書更新のための認証も http://<domain>/.well-known/acme-challenge/ へアクセスすることによって行なわれます. この URL へのアクセスが HTTPS の URL へリダイレクトされる場合は, Let’s Encrypt の認証サーバーは自動的に HTTPS の URL にアクセスしてくれます. このため, HTTPS へ全てのアクセスをリダイレクトする場合, 認証のための設定は HTTPS 側に記述します.

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です