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をコピーしました