Let's Encrypt 再入門
自分で偉そうに「Let’s Encrypt はだいたい理解した」と書いて1年もしないうちに すでにほぼほぼすべて忘れている。 結局 Let’s Encrypt どーすればいいか!?
以下の自分のブログなどを参考に、再入門する。
http://ryos36.hatenablog.com/entry/2020/04/24/191348
https://www.sinby.com/seiko-udoku/20/04231.html
まず 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 の設定も変えておきます。
location /.well-known/ {
root /var/www/html/;
}
–dry-run オプションで実行します。
certbot certonly \
--dry-run \
--webroot-path /var/www/html \
-m <メールアドレス> \
-d <ドメイン名> --webroot
うまくいきました。あとは –dry-run を外すだけ。
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for 2021.sinby.com
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- The dry run was successful.
似たようなことを前にも書いていた。 https://www.sinby.com/seiko-udoku/20/04240.html
そして、その後、crontab で自動化している。
0 0 1 * * root /usr/bin/certbot renew
2 0 1 * * root /etc/init.d/nginx restart
たしか、certbot で renew しただけではだめで、 nginx の再起動が必要だった。 あれ?これ、–post-hook に nginx の restart するべきなのでは?あとで、変更しておこう。renew に何も DNS の情報渡してないけどいいのだろうか?
ついでに http を https へ転送。
return 301 https://$host$request_uri;