Let’s Encrypt の certbot で証明書の取得・更新で –webroot を apache使用時に指定する場合

ALL
スポンサーリンク

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

コメント