Web サーバを分散したので Let’s encrypt サーバ証明書の更新方法を考えてみる

Let's Encrypt

移行前後の構成概要

移行前は一台の Fedora サーバ上の apache の仮想ホスト機能で、WordPress(2サイト)・Nextcloud・Matomo の4つのサイトを運用していた。サーバ証明書の更新があった場合は、certbot の更新cron(systemd timer)で httpd の再起動をするようになっている。

移行前の Web サーバには WordPress の1サイト(当サイト)を残し、他のサイトは別々の他のサーバ 3 台へ移行した。また、別の fedora サーバ上に nginx のリバースプロキシをたて、4 つのサイトをリバースプロキシサーバを経由してアクセスできるようにした(リバプロ経由でアクセスするためには、外部接続ルータや内部のDNS情報等の変更も必要)。また、リバースプロキシでは SSL 通信の定義も行っている。

移行時、サーバ証明書は手動で NFS サーバ上にあるバックアップからコピーした。まだサーバ証明書の自動更新スクリプトをしこんでいないので、このまま放置すると証明書エラーが発生する。アプリによってはアクセスできなくなる。

サーバ証明書更新方法

それぞれの Web サーバおよびリバースプロキシで、NFS 上のバックアップをローカルに rsync して、apache もしくは nginx を再起動するスクリプトを一日一回実行するようにした。

サーバ証明書バックアップ方法変更

certbot が動作しているサーバでは、cp コマンドでサーバ証明書を NFS 上のディレクトリにバックアップしていたが、rsync を使用するように変更した(※)。注意点としてはシンボリックリンク先をバックアップするようにオプションをつけること。具体的には以下のように指定する。

rsync -v -aruz --delete --copy-links src/ dst/

※今となっては正確な理由は覚えていないがおそらく無駄なコピーをしなくていいから(タイムスタンプも変わらない)。

コメント

タイトルとURLをコピーしました