ここでサーバ証明書の自動更新ができそうと書いておいてずっとほったらかしにしておいた。本当はその方法がわからなかったからなのだが…
その当時からまだ数年しかたっていないが、今まではあちこち調べまわってやっと正解にたどり着くかどうかだったが(私だけかもしれない…)、この程度のことはAIが教えてくれるようになり大変便利になった。
これからはAIを使う人と使わない人の情報格差はますます開いていくのだろう。そしてもうこんなブログは不要なのかもしれない。
前提条件
xigmanasの/confにfullchain.pemとprivkey.keyを置いておくこと。
AIに教えてもらって作成したスクリプト
#!/bin/sh
set -eu
CONFIG="/conf/config.xml"
CERT="/root/fullchain.pem"
KEY="/root/privkey.pem"
BACKUP="/conf/config.xml.bak.$(date +%Y%m%d-%H%M%S)"
echo "[*] mount read/write"
mount -uw /cf
echo "[*] backup"
cp "$CONFIG" "$BACKUP"
echo "[*] encode"
CERT_B64=$(
uuencode -m -r "$CERT" dummy
)
KEY_B64=$(
uuencode -m -r "$KEY" dummy
)
echo "[*] update config.xml"
xml ed -L \
-u '//system/webgui/certificate' \
-v "$CERT_B64" \
"$CONFIG"
xml ed -L \
-u '//system/webgui/privatekey' \
-v "$KEY_B64" \
"$CONFIG"
echo "[*] restart webgui"
/etc/rc.d/lighttpd restart
echo "[*] mount read only"
mount -u -o ro /cf
echo "[*] done"
ちょっとした解説
CERTとKEYで指定しているファイルは実は別サーバで取得しているが、そこからこのサーバのストレージ上にバックアップとして定期的にコピーしてある(実際のパスとは違う)。
/confは/cf/confへのシンボリックリンクになっている。
あとは、このスクリプトをcronで自動起動すればよい。


コメント