自分で偉そうに「Let's Encrypt はだいたい理解した」と書いて1年もしないうちにすでにほぼほぼすべて忘れている。結局 Let's Encrypt どーすればいいか!?
以下の自分のブログなどを参考に、再入門する。これとか
まず certbot は --webroot-path で指定されたディレクトリにアドホックな情報をつくります。今確認すると .well-known/acme-challenge/ というディレクトリをつくりその下にアドホックな情報を作るようです。その後、Let's Encrypt のサーバに -d で指定されたドメインの情報(URL)を渡します。この URL に Let's Encrypt はアクセスしに来ます。そこには .well-known/acme-challenge/ 以下に情報がある事でしょう。その情報の一致を見て正しいウェブサイトだと確認した上でセキュリティ情報(SSL)を払い出すようです。
その他、DNS を使った解決方法もあるようですが、上の URL を使う方法が一番簡単そうです。これなら nginx を動かしながら諸設定が出来ます。
また、nginx が動いていない場合は --standalone のオプションをつければcertbot 自身がウェブサーバになるようです。
バーチャルドメイン使っているので nginx の設定も変えておきます。
--dry-run オプションで実行します。
うまくいきました。あとは --dry-run を外すだけ。
似たようなことを前にも書いていた。
そして、その後、crontab で自動化している。
たしか、certbot で renew しただけではだめで、 nginx の再起動が必要だった。あれ?これ、--post-hook に nginx の restart するべきなのでは?あとで、変更しておこう。renew に何も DNS の情報渡してないけどいいのだろうか?
ついでに http を https へ転送。