Xserverの無料SSL証明書(let’s encrypt)は、3ヶ月ごとのタイミングで証明書を自動更新する。
Basic認証によるアクセス制限を行なっていると、自動更新でエラーになり、失敗となる。
これを回避する手順は以下の通り。
let’s encrypt SSL証明書 発行のために、アクセスするディレクトリは、Basic認証のアクセス制限を外しておく。
let’s encrypt の認証ファイルは、
.well-known/acme-challenge/
このディレクトリ。
Basic認証で、このディレクトリにアクセスできないために、更新できない(エラー)となる。
このディレクトリに .htaccess でアクセス許可する設定を記述する。
FTPでチェックしたところ、上の認証用のディレクトリが見つからなかったため、ディレクトリを作成。
そのあと、
Satisfy any
order allow,deny
allow from all
Satisfy any を宣言することで、Basic認証 or ホストによるアクセス制御 のどちらかを満たせば良いとなる。つまり、Satisfy any = Basic認証は無効とできる。(ディフォルトは、Satisfy All。 つまり、両方の条件をクリアしないとアクセスできない)
order allow,deny は、ディフォルトはアクセス拒否。(一旦、アクセスを拒否して、そのあと、許可する条件を書くのがセオリー)
allow from all は、全てのアクセスを許可。
となり、この3行は、
Basic認証か、ホストによるアクセス制御のどちらかをパスすれば、アクセスOKだよ(Satisfy All)
一旦、全部アクセス拒否するが、(order allow,deny)
全てのアクセスを許可する(allow from all)
ということになる。
謝辞
- Basic認証の環境下でのlet’s encrypt :: カテル開発ブログ
- Let’s Encrypt で認証受けようとしたら BASIC認証がかかっている場合にやれば良いこと | フリーフードファイター兼SE社長活動日記|株式会社ジーティーアイ
- Apacheのアクセス制御をちゃんと理解する。 – こせきの技術日記
- .htaccess の書き方(アクセス制御編) – Qiita
- アクセス制限の記述(Order, Allow, Deny) – アクセス制限 – Apache入門
こちらのサイトを参考に、本記事はまとめました。感謝です。