Time4VPS に FileMaker Server を構築する4

前回は Time4VPS に立てた FileMaker Server に Let’s Encrypt を設定した。

Time4VPS に FileMaker Server を構築する3 – with a Christian Wife
https://wacw.cf/2021/07/03/filemaker-server-on-time4vps-3/

今回は証明書の更新だ。

環境:
・Time4VPS「Linux 8」(CPU: 2 x 2.60 GHz、RAM: 8192 MB、Storage: 80 GB、Bandwidth: 8 TB、Port speed: 100 Mbps、Virtualization: KVM)、CentOS 7.8
・FileMaker Server for Linux 19.0.1.22(英語)
・macOS Catalina Version 10.15.6(英語環境) で SSH 接続
・Freenom のドメイン(サブドメイン)
・FileMaker Pro 18 Advanced
・FileMaker Go 18

証明書の発行は Certbot の standalone モードで行った。しかし、証明書の更新は webroot モードで行なう。

SSL 証明書の設定ファイル(最初の証明書の取得時に生成される)は /etc/letsencrypt/renewal/[ドメイン].conf である。設定ファイルを開くと [renewalparams] の項目が以下のようになっているはずだ。

[renewalparams]
authenticator = standalone
account = [文字列]
manual_public_ip_logging_ok = None
server = https://acme-v02.api.letsencrypt.org/directory

これを以下のように書き換える。

[renewalparams]
authenticator = webroot
account = [文字列]
manual_public_ip_logging_ok = None
server = https://acme-v02.api.letsencrypt.org/directory
webroot_path = /opt/FileMaker/FileMaker Server/HTTPServer/htdocs,
[[webroot_map]]
[ドメイン] = /opt/FileMaker/FileMaker Server/HTTPServer/htdocs

このうえで –dry-run オプションで更新してみると、Congraturation! と表示された。

# certbot renew --dry-run

まだ証明書の更新期間ではないが強制的に更新を実行してみた。

まずは現在の更新期限を確認する。

# certbot certificates

その上で更新を強制実行だ。

# certbot renew --force-renew

問題なく更新ができた。再度更新期限を確認すると、たしかに変更されている。

# certbot certificates

しかし、FileMaker Server の Admin Console の「Configuration>SSL Certificate」やブラウザの URL バーの鍵アイコンをクリックして確認すると SSL の更新期限が前のままだ。

これは教科書的には「Web サーバーを再起動していないから」なんだけど、今回の FileMaker Server は httpd を起動させないようにしている。起動させることで Admin Console が表示されないという不具合があるからだ。

試しに CentOS を再起動してみたり、FileMaker Server を止めて Apache だけを起動して reload してみたりしたが、これでも Admin Console やブラウザの更新日が変更されない。

いろいろ研究して分かった。Certbot での更新は /etc/letsencrypt/live/[ドメイン]/ に保存された証明書の情報を書き換える。FileMaker Server に証明書をインポートする際に、一旦 FileMaker Server のディレクトリ(/opt/FileMaker/FileMaker Server/CStore)に証明書をコピーした。Admin Console やブラウザは /opt/FileMaker/FileMaker Server/CStore の情報を読みに行くようなのだ。

ではどうすればいいか。Admin Console の「Configuration>SSL Certificate>Delete Files」で現在の証明書を削除した上で、/etc/letsencrypt/live/[ドメイン]/ の証明書を /opt/FileMaker/FileMaker Server/CStore の証明書に上書き。そして再度 FileMaker Server にインポートする。FileMaker Server を再起動すれば完了だ(要するに、前回行った Let’s Encrypt の初期設定を繰り返す)。

最後に CentOS を再起動すれば Admin Console でもブラウザでも SSL 証明書の更新日が最新のものが表示されるようになった。

なおこの過程で Admin Console でデータベースが表示されなくなったりすることがあったが、以下のコマンドで adminserver を再起動すれば直る。

# fmsadmin restart adminserver

この手順をスクリプト化することができれば cron に登録して更新を自動化することもできるだろう。