Certbot証明書発行・更新コマンドとNginx設定(Let’s Encrypt)

WordPress

概要

Let’s Encryptで証明書を発行し、Nginx で利用するための設定手順を説明します。 

環境

  • OS: CentOS 8.2
  • Webサーバ: Nginx 1.18
  • WordPress 5.5.3

証明書発行から適用まで

証明書発行に使うディレクトリの作成

/var/www/html/letsencrypt ディレクトリを作成します。

mkdir /var/www/html/letsencrypt
chown nginx:nginx /var/www/html/letsencrypt

発行のためのNginx設定ファイルの編集

vi /etc/nginx/conf.d/default.conf
server {
    listen       80
    listen       [::]:80;

    # ここから追加
    location ^~ /.well-known/acme-challenge/ {
        root     /var/www/html/letsencrypt;
    }
    location =  /.well-known/acme-challenge/ {
        return   404;
    }
    # ここまで追加

    location / {
        return   301 https://$host$request_uri;
    }
}
~以下略~

WebrootでのSSL証明書発行

certbot-auto certonly --webroot --webroot-path /var/www/html/letsencrypt -d www.mulong.me

証明書の適用のためのNginx設定ファイルの編集

vi /etc/nginx/conf.d/default.conf
server {
    listen       80
    listen       [::]:80;

    ~省略~
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;

    server_name  www.mulong.me;

    # ここから追加
    ssl_certificate     "/etc/letsencrypt/live/www.mulong.me/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/www.mulong.me/privkey.pem";
    # ここまで追加

    ~省略~
}
~省略~

証明書発行とNginxの設定はここまで。

証明書の更新

SSL証明書更新+Nginxの再起動

certbot-auto renew --deploy-hook "systemctl reload nginx"

–-deploy-hookオプションにより、証明書の更新処理が成功した場合だけNginxサービスの再起動を行います。

自動化:SSL証明書更新+Nginxの再起動

上記の証明書更新処理を、crontabコマンドを使用して定期的なジョブ実行とします。
crontab -l > ~/.crontab-editlog.bkは編集前のバックアップ処理)

crontab -l > ~/.crontab-editlog.bk
crontab -e

下記の処理は、ランダムで0〜1時間のsleep後に、certbot-auto renewコマンドを実行しています。コマンドは毎日0時0分と12時0分(0 0,12 * * * の部分で指定)に実行されます。

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PYTHONIOENCODING='utf-8'

0 0,12 * * * python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot-auto renew --deploy-hook "systemctl reload nginx"

cronの実行ログはlessコマンドで確認できます。抜けるときは q です。

less /var/log/cron

参考サイト

コメント

タイトルとURLをコピーしました