Nginx: Let’s EncryptのTLS/SSL証明書の更新方法


3ヶ月ほど前に本ブログのサーバを更改の上、https化対応を実施。TLS証明書についてはフリーのLet’s Encryptより発行したが、当該証明書の有効期間は90日である為、先日初回の更新を行った。本記事はその際の作業手順を記載したもの。

前提環境

CentOS 7系、Nginx、Let’s Encryptのクライアントツールはcertbot。既にTLS証明書は導入済み。

Nginxの設定

certbotの–webrootオプション(※)を用いてcertbotクライアント(webサーバ側)と認証局側の認証を行う際、認証局側はhttp://www.example.com/.well-known/acme-challenge/以下のファイルにhttpでアクセス(GETメソッド)を行う。

※webサーバ側のドキュメントルート下に出力される認証用のファイルで認証を行う。
User Guide — Certbot documentation

httpsではなくhttpであり、仮に全てのhttpアクセスを301リダイレクトしている場合は認証が失敗する為、下記の通りNginxの設定を変更する。

変更対象ファイルは下記の何れか。私はconf.d/以下にserverディレクティブの設定を記載しているのでNo.2のファイル。

  1. /etc/nginx/nginx.conf
  2. /etc/nginx/conf.d/{{filename}}.conf

設定ファイルの修正後、下記コマンドで設定のテスト及び反映。

念の為、httpで下記のパスへアクセスした際にリダイレクトされない事確認。

また、.well-known/acme-challenge以外のパスへのhttpアクセス時にhttpsアドレスへ301リダイレクトされることを確認する。

TLS証明書の更新

下記コマンドを用いて証明書を更新。(対象ドメインはサンプルとして自ブログのものを記載。)

その後、改めてNginx設定の更新。

最後にブラウザより証明書のnot valid after要素が更新されている事を確認。

因みに、httpアクセスが出来なかった場合はcertbotコマンドで下記のエラーが出力される。

参考サイト


コメントを残す