最新ニュース エックスサーバーのBASIC認証によるアクセス制限サイトが、SSL証明書を更新できない場合
SSLで暗号化したテストサイトなどをBASIC認証でアクセス制限している場合、SSL証明書の更新ができません。ただ裏技のような方法でアクセス制限したまま更新する方法もありました。
どのような状況なのか
そもそもアクセス制限をかけたサイトで、SSLによる暗号化が必要なのか?ということですが、これは必要です。
アクセス制限をかけるのは、会社内や特定の範囲でアクセスできるようにする、ということですが、例えばその一人が公衆Wi-Fiなどからアクセスした場合に、暗号化されていなければ認証後に表示される内容がそのまま漏洩するということも十分にありえます。
アクセス制限とSSL暗号化はセットで一定のセキュリティを保てることになります。ただしその状態では、SSLの証明書が自動で更新されないという点がネックになります。
自動更新できない原因
エックスサーバーなどの無料独自SSLは「Let’s encrypt」による証明書を利用しますが、この更新作業ではそのドメインの「/.well-known」というディレクトリへのアクセスを試みるようです。
その際にアクセス制限がかけられているとそのディレクトリにアクセスができず、更新エラーとなるようです。
FTPなどでサーバーを確認しても、そうしたディレクトリは作成されていないため、ユーザーが操作できない部分で処理されているようです。
エックスサーバーのサポートの回答
この件についてエックスサーバーのサポートに問い合わせてみました。
回答としては、BASIC認証によるアクセス制限がある場合は、SSLの更新ができないため、アクセス制限を解除し、手動で更新する形を案内されました。
このため、この後に記載する対応方法も自己責任で行ってください。
また、素直にアクセス制限を解除して更新したらいいのでは?と思うかもしれませんが、その瞬間に不正アクセスがないとは限りません。特にWordPressなどのサイトは常に攻撃されていると考える方が良いと思います。
アクセス制限の状態で更新する方法
「Let’s encrypt」がアクセスするのは具体的には下記ディレクトリです。
/.well-known/acme-challenge
このため自分のサーバへFTPなどで表示し、
/home/(ドメイン名)/public_html/.well-known/acme-challenge
というディレクトリを作ります。「well-known」の手前の「.(ピリオド)」も必要です。
この中に下記のような内容で「.htaccess」ファイルを作成し、このディレクトリの中だけアクセス制限を解除します。
Satisfy any order allow,deny allow from all
この状態で、エックスサーバーのコントロールパネル「SSL設定」>「(対象ドメインを)選択する」にて「更新」ボタンを押します。操作内容に問題がなければ、更新できると思います。
実はこの方法についてもサポートに確認したのですが、「更新できない」という説明でした。実際は更新できましたが、できないと回答する理由もあるのだと思います。あくまでも自己責任で。
更新後の操作
更新が完了した後、普段は使わないディレクトリのため、そのままアクセス解放にしても特に問題はなさそうですが、やはりこのままでは不正な利用もありうるようです。通常はサーバー管理側で操作しているディレクトリでもありますので、この設定は普段解除しておきましょう。
解除の仕方は簡単なもので良いと思いますが、「acme-challenge」の中にある「.htaccess」のファイル名を変えておくのがよいと思います。次回必要になった際に「.htaccess」に書き直せばOKです。