サーバ証明書をLet’s Encryptで取得しているのですが、どうやら更新に失敗しているようでした。
証明書取得時は特に問題なかったけどたしかあの時は単純にhtmlだけ置いておいてアプリ等は動かしていなかったので取得時も問題出なかったのでしょう。
どのように対処したかメモしておきます。
環境
- CentOS7
- certbot 1.22.0
証明書はメインのドメインとサブドメインを複数個取得しています。
今回失敗していたのはメインのドメインとサブドメインの中のいくつかで、全て失敗しているわけではなかったです。
エラー内容
エラーの内容は以下です。複数のドメイン(サブドメイン)で証明書取得に失敗しているため少し長めですが載せておきます。
# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/サブドメイン1.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for サブドメイン1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/サブドメイン2.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for サブドメイン2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/メインのドメイン.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for メインのドメイン
Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
Domain: メインのドメイン
Type: unauthorized
Detail: Invalid response from https://メインのドメイン/.well-known/acme-challenge/XXXX [IP Address]: "<!doctype html><html lang=\"ja\" prefix=\"og: https://ogp.me/ns#\"><head><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" co"
Hint: The Certificate Authority failed to download the temporary challenge files created by Certbot. Ensure that the listed domains serve their content from the provided --webroot-path/-w and that files created there can be downloaded from the internet.
Failed to renew certificate メインのドメイン with error: Some challenges have failed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/サブドメイン3.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for サブドメイン3
Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
Domain: サブドメイン3
Type: unauthorized
Detail: Invalid response from https://サブドメイン3/.well-known/acme-challenge/XXX [IP Address]: "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1,max"
Hint: The Certificate Authority failed to download the temporary challenge files created by Certbot. Ensure that the listed domains serve their content from the provided --webroot-path/-w and that files created there can be downloaded from the internet.
Failed to renew certificate サブドメイン3 with error: Some challenges have failed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/サブドメイン4.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for サブドメイン4
Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
Domain: サブドメイン4
Type: unauthorized
Detail: Invalid response from https://サブドメイン4/login [IP Address]: "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\"/><meta"
Hint: The Certificate Authority failed to download the temporary challenge files created by Certbot. Ensure that the listed domains serve their content from the provided --webroot-path/-w and that files created there can be downloaded from the internet.
Failed to renew certificate サブドメイン4 with error: Some challenges have failed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing
/etc/letsencrypt/renewal/サブドメイン5.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for サブドメイン5
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following simulated renewals succeeded:
/etc/letsencrypt/live/サブドメイン1/fullchain.pem (success)
/etc/letsencrypt/live/サブドメイン2/fullchain.pem (success)
/etc/letsencrypt/live/サブドメイン5/fullchain.pem (success)
The following simulated renewals failed:
/etc/letsencrypt/live/メインのドメイン/fullchain.pem (failure)
/etc/letsencrypt/live/サブドメイン3/fullchain.pem (failure)
/etc/letsencrypt/live/サブドメイン4/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3 renew failure(s), 0 parse failure(s)
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
公式特典!初期工事費実質0円!最大41,250円割引!おトクにauひかりをスタートできる!
失敗した原因は?
失敗していた原因は http://[ドメイン]/.well-known/acme-challenge/XXXXXXX というパスにアクセスできていないことでした。
つまりはApacheの設定ミス、漏れとなります。
Apacheのログを見ると404やら304やらが出ていて正常にアクセスできていないことが確認できました。
Apacheの設定を修正
Apacheはhttp(80ポート)でアクセスするとhttps(443)に流すように設定しています。
Let’s Encryptは80ポートにアクセスしてくるためこのままだと443ポートに行ってしまうため、80ポート側の設定で/.well-known/acme-challenge/XXXXXXXのみ除外するように修正していきます。
追加する設定は以下です。
RewriteCond %{REQUEST_URI} !(^/\.well-known/acme-challenge/[\w-]{43}$)
追加後の設定ファイルがこちら
<VirtualHost XXXX.developers-trash.com:80>
DocumentRoot "XXXXXXXXXXXXXXXX"
ServerName XXXX.developers-trash.com
ServerAlias XXXX.developers-trash.com
CustomLog logs/XXXX_access.log common
ErrorLog logs/XXXX_err.log
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} !(^/\.well-known/acme-challenge/[\w-]{43}$)
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
</VirtualHost>
<VirtualHost XXXX.developers-trash.com:443>
省略
</VirtualHost>
以上です。
コメント