====== 【Let's Encrypt】自動更新がBasic認証で弾かれる ====== まず、certbot-renew のステータスを確認します。 sudo systemctl status -l certbot-renew certbot[14804]: "\n\n401 certbot[14804]: Unauthorized\n\n

Unauthorized すると「401 Unauthorized」で、認証のエラーが出ていることがわかります。 Let's Encrypt の自動更新ではドキュメントルートに「.well-known/acme-challenge」という2階層のディレクトリを作成し、その下にファイルが作成されます。\\ しかし、Basic 認証がかかっていると、そのファイルにアクセスできず、自動更新に失敗してしまいます。 そこで、conf ファイルを編集し「.well-known」以下は Basic 認証の対象外に設定します。 # 設定ファイルを確認 ls -l /etc/httpd/conf.d # 対象のファイルを修正 sudoedit /etc/httpd/conf.d/vhost-ssl.conf ServerName example.com DocumentRoot /var/www/html/example.com ~ 省略 ~ Options FollowSymLinks AllowOverride All # ↓↓↓ 以下の3行を追加 ↓↓↓ Require all granted # ↑↑↑ ~ 省略 ~ 設定後、apache を再起動します。 # 再起動 sudo apachectl graceful 試しに、正常に動作するか、ディレクトリとファイルを作ってみます。 # 再帰的にディレクトリ作成 mkdir -p /var/www/html/example.com/.well-known/acme-challenge # テスト用ファイル作成 vi /var/www/html/example.com/.well-known/acme-challenge/test.html ブラウザで Basic認証なしでアクセスできるか確認します。\\ このとき、すでに Basic認証済みのブラウザでアクセスすると認証が発生せず意味がないので、シークレットモードなどを使います。\\ https://example.com/.well-known/acme-challenge/test.html 認証なしでアクセスに成功したら、Let's Encrypt の自動更新も成功するはずです。\\ 動作確認後は、作成したディレクトリとファイルは削除しておいてください。