Let's Encryptの証明書を自動更新するようにする
Let’s Encryptの証明書を使ってSQLServer Linuxへの接続の暗号化をしてみるのSSL証明書を自動更新するようにした
Let’s Encryptは使い勝手がよいのですが、証明書の有効期限が90日なので忘れないように更新するようにしないといけません
しかし更新を手でやることにすると、必ず忘れる(もしくはポカをやらかす)ので自動更新するようにしておく
設定メモ
証明書をコピーするスクリプトを書く
$ nano SQLServer_UpdateSSLCert.sh
#! /bin/bash
# SQLServerを停止する
systemctl stop mssql-server
sleep 1m
# SSL証明書をコピーする
cp /etc/letsencrypt/live/sqldb.example.com/cert.pem /var/opt/mssql/ssl
cp /etc/letsencrypt/live/sqldb.example.com/privkey.pem /var/opt/mssql/ssl
chown mssql:mssql /var/opt/mssql/ssl/*
chmod 600 /var/opt/mssql/ssl/*
# SQLServerを起動する
systemctl start mssql-server
$ chmod +x SQLServer_UpdateSSLCert.sh
certbot-autoをcronで実行する
certbot-auto
コマンドには--renew-hook
オプションで、証明書が更新された後に実行させたいことが書いておける賢い機能があるのでそれを活用します
$ sudo crontab -u root -e
30 4 1 * * /opt/certbot/certbot-auto renew --keep-until-expiring --standalone --preferred-challenges http-01 --renew-hook "/[Path]/SQLServer_UpdateSSLCert.sh"
certbot-auto
コマンドには
--post-hook
オプション--renew-hook
オプション
があるようですが、今回のケースでは
--renew-hook
オプション:証明書が更新された時に実行する
がベターな感じです
たとえばnginx
を止めてからcertbot-auto
コマンドを実行、実行した後にnginx
を動かすような場合は
- –pre-hook “service nginx stop” –post-hook “service nginx start”
のように--pre-hook
オプションと--post-hook
オプションを組み合わせてつかうと良さそうです
竹内電設は、大阪府下を中心に中小規模の組織がITシステムを効果的に活用するための、お手伝いをさせていただいております
© 2023 竹内電設; all rights reserved.