[原因]SSL証明書の再発行リクエストがBasic認証で弾かれていた。
CloudFrontを実装した際に、Basic認証をCloudFront関数で行う様に変更した。
原因となったCloudFront関数の内容はこちら
var authUser = 'hogehoge';
var authPass = 'hogepassword';
function handler(event) {
var request = event.request;
var headers = request.headers;
var authString = 'Basic ' + (authUser + ':' + authPass).toString('base64');
if (
typeof headers.authorization === 'undefined' ||
headers.authorization.value !== authString
) {
return {
statusCode: 401,
statusDescription: 'Unauthorized',
headers: {
'www-authenticate': {value: 'Basic'}
}
};
}
return request;
}
[解決方法]Basic認証を特定のURLのみ除外する&CloudFrontでビヘイビアを追加
1. CloudFront関数の変更
var uri = request.uri;
// URL に /.well-known/ が含まれている場合は何もしない。それ以外の場合は Basic 認証を設定する。
if (uri.includes('/.well-known/')) {
return request;
}
2. ビヘイビアの追加
設定しているクラウドフロントのビヘイビアに以下の設定を追加する。
パスパターンに .well-known/acme-challenge/*
キャッシュポリシーにキャッシュの無効化
を設定し、該当キャッシュを削除する。
[感想]そりゃそう
CloudFrontを実装した際は、オリジンのcronを確認すべきですね、、、
良い勉強になりました!!