0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFront関数でBasic認証したらletsEncrypt自動更新できなくなった。

Last updated at Posted at 2023-10-24

[原因]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を確認すべきですね、、、
良い勉強になりました!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?