概要
Let’s Encryptで証明書を発行し、Nginx で利用するための設定手順を説明します。
環境
- OS: CentOS 8.2
- Webサーバ: Nginx 1.18
証明書発行から適用まで
証明書発行に使うディレクトリの作成
/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
のバックアップをとり、編集画面に入ります。
crontab -l > ~/.crontab-editlog.bk
crontab -e
証明書更新のコマンドを毎日0時と12時(0 0,12 * * *
の部分で指定)頃に実行します。
時刻ちょうどの問合せの集中を避けるため、ランダムで0〜1時間のsleepを挟んだ後に、certbot-auto renew
コマンドを実行しています。
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
参考サイト
- Let’s Encrypt で証明書を発行して運用するための nginx の設定
https://blog.ymyzk.com/2016/02/nginx-config-for-lets-encrypt/ - Gerando certificados com o LetsEncrypt
https://manuais.ifsp.edu.br/books/certificados-ssl/page/gerando-certificados-com-o-letsencrypt - Nginx: Let’s Encrypt (certbot)のTLS/SSL証明書をcronで定期自動更新する設定
https://yukun.info/cron-certbot-renew/
コメント