秋田
さくらのレンタルサーバで、お客さんのテストサイトへのアクセスに Basic認証を使うことが多いのだけど、きっとこれだと Let’s encrypt の自動更新ができないんじゃないかなぁ〜って思い、さくらインターネットに問い合わせしてみました。
案の定自動更新が出来ないとの事。無料のじゃなくて有料のを使ってくださいって回答。
でもやっぱり無料のを使いたいじゃないですか。なのであの手この手でやってみました。
結論
結論から言うと、Basic認証は使わずに .htaccess でIPアドレス制限をして、リーバースプロキシで別サイトを表示させ、Let’s encrypt を騙して?実現した感じです。
まあ「きっと出来てる」って所。新規の SSL取得は出来ました。更新ができるかは?3ヶ月後のお楽しみ。
手順
- DNS で example1.xxx.com と example2.xxx.com を CNAMEでさくらのレンタルサーバに向ける
- さくらのレンタルサーバで上記二つのディレクトリを作る
- ドメイン/SSL の設定でアクセスできるようにする
- example1.xxx.com に index.php と .htaccess を配置
- example2.xxx.com に index.php を配置
- 指定した IPアドレスと指定していない IPアドレスで http://example1.xxx.com にアクセスして表示が変わるか?確認
- SSL設定で example1.xxx.com に Let’s encrypt SSLをあてる
- しばらく待つ
- SSLが新規に取得できた(喜ぶ)
ソース
index.php は index.html でも良いと思うけどなんとなく php にしてみました。
example1.xxx.com
index.php
example1.xxx.com
これだけ書いておく
.htacces
RewriteEngine On
#アクセス許可する IPアドレス
RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$
RewriteCond %{HTTP_HOST} ^example1.xxx.com$ [NC]
RewriteRule ^(.*)$ http://example2.xxx.com/index.php [P,L] #httpsはだめ
指定した IPアドレス xxx.xxx.xxx.xxx はアクセスを許可。それ以外は http://example2.xxx.com/index.php のコンテンツを見せる。
ブラウザのURLは http://example1.xxx.com のまま。
example2.xxx.com
index.php
example2.xxx.com
これだけ書いておく
まとめ
これで無料SSLを利用していながら、指定した IPアドレス以外は別のコンテンツを見せる事に成功〜!
そのうちBasic認証でもやってみようかな?と思ってますが、いつになることやら・・・