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
一部伏せ字
その後
# certbot renew –dry-run
ドライランを付けテスト。この時どういう分けかkinryo.netでエラーがでる
Failed to renew certificate kinryo.net with error: Missing command line flag or config entry for this setting:
Input the webroot for kinryo.net:
だが、ドライランを付けずに
# certbot renew
で本ちゃんでやるとエラーは出ずに
Congratulations, all renewals succeeded:
   /etc/letsencrypt/live/aarah.info-0001/fullchain.pem (success)
   /etc/letsencrypt/live/kinryo.net/fullchain.pem (success)
   /etc/letsencrypt/live/kinryokai.net-0001/fullchain.pem (success)
   /etc/letsencrypt/live/kinryokai.net/fullchain.pem (success)
とエラーなく終了した。この原因は不明

だがこれでは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 certificates

* certbotでメールサーバーの証明書の更新
# certbot certonly –dry-run -d mail.kinryo.net →ドライランでテスト
その後下記のように聞かれるので
1: Apache Web Server plugin (apache)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
Select the appropriate number [1-3] then [enter] (press ‘c’ to cancel): 3 と入力

場所を聞かれるので、kinryo.netのWEBの場所を入力(メールを保存している場所では無い)
Input the webroot for mail.kinryo.net: (Enter ‘c’ to cancel): /XXXXX/public/kinryo
これで成功するので、ドライランを外して、本ちゃんの更新をする。
その後、secondary側の/etc/rsyncd.conf も同じ様に変更して置くこと。

フジマル について

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

コメントを残す

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

CAPTCHA


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