Let’s Encrypt の certbot で証明書を取得・更新する際に、ドメインの所有権の確認としてポート80番へ Let’s Encrypt のサーバーからアクセス可能かチェックされます。
この時、certbot で –standalone を指定していると certbot自身がWEBサーバーとなりますが、apache等を停止させておく必要があります。
–webroot を使用すると、既存のWEBサーバーを使用しますが、
http://証明書のドメイン/.well-known/acme-challenge/
へ Let’s Encrypt のサーバーからアクセスできることが必要です。ここでは、apacheの設定について説明します。
certbot で –webroot を指定する場合は、-wオプションでWEBルートディレクトリを指定します。certbot実行時に、このディレクトリ下に一時的に .well-known/acme-challenge ディレクトリが作成されます。
このディレクトリを、http://サーバー名/.well-known/acme-challenge/ でアクセスできるように apacheで設定します。
ここでは例として、WEBルートディレクトリを /var/www/letsencrypt とすると、次のように設定します。
WEBルートディレクトリを作成しておきます。
mkdir -p /var/www/letsencrypt/
/etc/httpd/conf.d/letsencrypt.conf を次のように作成します。
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
AllowOverride None
Options None
Require all granted
<LimitExcept GET OPTIONS>
Require all denied
</LimitExcept>
</Directory>
apacheに反映します。
systemctl reload httpd
certbotを実行します。
証明書の取得の場合は、次のように実行します。
既に Let’s Encrypt で証明書を取得済みで、これから –webroot での運用に切り替える場合は、以降に記載の証明書更新の場合の作業のみでいいです。–webroot指定での新たな証明書の取得し直しは不要です。
-dで指定するドメインは、各自のドメインに合わせてください。
実行で、/var/www/letsencrypt下に 一時的に .well-known/acme-challengeディレクトリとその下にファイルが作成され、 Let’s Encrypt のサーバーからアクセスされます。
certbot certonly --agree-tos --webroot -w /var/www/letsencrypt -d test.example.com
証明書更新の場合は、次のように実行します。
certbot renew --webroot -w /var/www/letsencrypt
参考
Certbotでstandaloneからwebrootに切り替える方法 | .LOG
Let’s Encrypt と Apache で https
Let’s Encrypt 証明書発行でつまずいたこと①
Certbot – ArchWiki
コメント