PVEのLet’s Encrypt証明書自動更新の設定を行いました.以下の動作を行うようにしています.
- 一日一回実行する
- 別サーバ上に保存されている証明書および秘密鍵を所定の場所・名前で無条件にコピー
- pveproxyの再起動
2022/1/10 このページによると,PVE自身で自動更新できるようです.ただ,PVEのACME設定でDNSを利用する方法(DNS用のPluginの設定方法)がわからなかったのでこの方法は断念しました.
自動更新の設定
Let’s Encryptの証明書は,apacheが動作しているサーバで自動取得しており,そのサーバ上のバックアップフォルダに格納するようにしています.
コピー(SCP)用スクリプト
Let’s Encrypt証明書をscpで取得するシェルスクリプトを/etc/pve/local/scp-letsencrypt.shとして作成します.このフォルダには実行権を与えることができないようなので,serviceファイルでsh コマンドで起動することにします.シェルスクリプトの内容は以下のとおりです.scpできるようにファイルのアクセス権等は適切に設定しておいてください.
#!/bin/sh
WORK_DIR=/etc/pve/local
SRV=192.0.2.1
USR=user
cd ${WORK_DIR}
\rm -rf ./pve-ssl.key ./pve-ssl.pem
scp ${USR}@${SRV}:/backup/letsencrypt/example.com/fullchain.pem ./pve-ssl.pem
scp ${USR}@${SRV}:/backup/letsencrypt/example.com/privkey.pem ./pve-ssl.key
systemctl restart pveproxy
serviceファイル
timerから起動するserviceファイルを/etc/systemd/system/scp-letsencrypt-cert.serviceというファイル名で用意します.内容は以下のとおりです.
[Unit]
Description=Let's Encrypt Cert copy job
[Service]
#User=apache
ExecStart=/bin/sh /etc/pve/local/scp-letsencrypt.sh
KillMode=process
timerファイル
timerファイルを/etc/systemd/system/scp-letsencrypt-cert.timerというファイル名で用意します.内容は以下のとおりです.
[Unit]
Description=Let's Encrypt Cert copy job every 1 days
[Timer]
OnCalendar=*-*-* 00:05:00
Unit=scp-letsencrypt-cert.service
[Install]
WantedBy=timers.target
timerの有効化
以下のコマンドを実行して,timerを有効化します.
systemctl daemon-reload
systemctl enable scp-letsencrypt-cert.timer
systemctl start scp-letsencrypt-cert.timer
確認
以下のコマンドを実行し,開始時間が表示されていれば,設定は完了です.
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
(途中略)
Sun 2022-04-03 00:05:00 JST 6h left n/a n/a scp-letsencrypt-cert.timer scp-letsencrypt-cert.service
(途中略)
9 timers listed.
Pass --all to see loaded but inactive timers, too.
最後に実際に動作したかどうかを証明書のタイムスタンプやログなどで確認してください.
# pwd
/etc/pve/local
# ls -l
total 4
-rw-r----- 1 root www-data 184 Dec 30 14:45 10-openssl.sh
-rw-r----- 1 root www-data 46 Apr 2 16:11 config
-rw-r----- 1 root www-data 83 Apr 3 13:27 lrm_status
drwxr-xr-x 2 root www-data 0 Dec 2 18:11 lxc
drwxr-xr-x 2 root www-data 0 Dec 2 18:11 openvz
drwx------ 2 root www-data 0 Dec 2 18:11 priv
-rw-r----- 1 root www-data 306 Apr 3 00:05 pve-ssl.key
-rw-r----- 1 root www-data 5359 Apr 3 00:05 pve-ssl.pem
drwxr-xr-x 2 root www-data 0 Dec 2 18:11 qemu-server
-rw-r----- 1 root www-data 299 Apr 2 16:45 scp-letsencrypt.sh
#
コメント