letsencrypt の更新で躓いた

WEBサーバーはapacheを使い、複数のWEBを運用している。そして先日DRBDを導入し、運用している。ここで問題、apacheはDRBDから起動しているので、systemctl status httpd ではFailed になる(当たり前)なのでletsencrypt のstandalone モードでは不可能だ(Error while running apachectl graceful.になる。当たり前、systemctl から起動はしていないので)尚かつ万が一apache をストップしても、DRBDがセカンダリーをプライマリーにして、サーバーは落ちない。

なので、standalone では無くwebroot でやるしかないが、私は standalone で作成したので webroot に変更する方法を探したら、https://blog.apitore.com/2016/08/06/lets-encrypt-standalone-webroot/ にヒントが在った。
でもこれはWEBが一つの場合で複数の場合では無い。因みに一つだけで設定をすると
Failed to renew certificate aarah.info-0001 with error: Missing command line flag or config entry for this setting:
Input the webroot for aarah.info:
というエラーが出た。複数のWEBはどうするのか、再度調べる。
https://community.letsencrypt.org/t/lets-encrypt-renewal-simulation-problem/43784/4 にその答えが在った。つまり複数のWEBの場所を [[webroot_map]] に記入すればよい。webroot-path は代表の一つでいいみたい。最終的に私の /etc/letsencrypt/renewal/aarah.info.conf は
# renew_before_expiry = 30 days
version = 1.11.0
archive_dir = /etc/letsencrypt/archive/aarah.info
cert = /etc/letsencrypt/live/aarah.info/cert.pem
privkey = /etc/letsencrypt/live/aarah.info/privkey.pem
chain = /etc/letsencrypt/live/aarah.info/chain.pem
fullchain = /etc/letsencrypt/live/aarah.info/fullchain.pem

# Options used in the renewal process
[renewalparams]
# authenticator = apache
#installer = apache
account = b9af5964365d5f0641d47c2fb75dbbb3
manual_public_ip_logging_ok = None
server = https://acme-v02.api.letsencrypt.org/directory
authenticator = webroot
webroot-path = /XXX/public/aarah,
[[webroot_map]]

aarah.info = /XXX/public/aarah
inpac.jp = /XXX/public/inpac
inpactours.jp = /XXX/public/inpactours
kinryo.net = /XXX/public/kinryo
opengarden.info = /XXX/public/opengarden
www.aarah.info = /XXX/public/aarah
www.inpac.jp = /XXX/public/inpac
www.inpactours.jp = /XXX/public/inpactours
www.kinryo.net = /XXX/public/kinryo
www.opengarden.info = /XXX/public/opengarden
一部伏せ字

になった。だがこれではDRBDでプライマリーとセカンダリーが入れ替わた時、現在のletsencrypt の設定が入っていないのでエラーになる。なのでrsync で同期をして置く。
コピー先の/etc/rsyncd.conf に
[letsencrypt]
path = /etc/letsencrypt
authusers = root
secrets file = /etc/rsyncd.secrets
read only =no
を追記し、rsyncdをリスタートしておく。
そして、コピー元でドライランをする(nがドライラン)
# rsync -avn /etc/letsencrypt/ rsync://root@192.168.xx.xx/letsencrypt
パスワードを聞かれるが、これはコピー先の/etc/rsyncd.secrets に設定してあるrootのパスワードを入力の事、のログインパスワードでは無い

エラーが無いことを確かめて、本ちゃんの同期
# rsync -av /etc/letsencrypt/ rsync://root@192.168.xx.xx/letsencrypt
これで同期が出来る。

自分への覚書
certbotでメールサーバーの証明書の更新
# certbot certonly –dry-run -d mail.kinryo.net →ドライランでテスト
場所を聞かれるので、kinryo.netのWEBの場所を入力(メールを保存している場所では無い)
Input the webroot for mail.kinryo.net: (Enter ‘c’ to cancel): /XXXXX/public/kinryo
これで成功するので、ドライランを外して、本ちゃんの更新をする。
その後、secondary側の設定も上記にあるrsyncで同期して置くこと。

f-otake について

1947年生れ、東京電機大学二部電気通信工学科卒、最後はスリランカ航空で営業だったのですが2018年に㈱インパック・ジャパンに再就職。趣味:登山、スキー、車いじり、コンピューター
カテゴリー: Linux運用時のメモ パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください