はじめに
Chromeさんをはじめ、SSL対応を当たり前にする動きがあります。
そんな中、起きたできごと、対応した内容を残しておきます。
SSLの設置が終わり、本来の業務に戻った。
拙著:SSLに対応する
後に、「何かBASIC認証2回出ちゃうんだけど」とツッコミが入る。
全部こっちにふらずに調べてよ部署違うんだし
調査して対応することになった。
起きていたこと
-
http://mydomain.jp/basic/
(BASIC認証範囲)にアクセス - 当然のようにBASIC認証実施
- 正しいIDとパスワードを入力
- ページにアクセス!……って、HTTPじゃねーか!
-
https://mydomain.jp/basic/
にリダイレクト - 当然のようにBASIC認証実施(1秒ぶり2回目)
という感じ。
調べたこと
teratailで同じような問題にあたっている人がいた。
<IF></IF>
とかあるのか最近のApacheは便利だなぁ、とか思ってたら、バージョン2.4からだった。
問題のサーバに入っているのは2.2
で、使えない。
じゃあバージョン上げちゃいますか、と思ったら許可は出ませんでした。なんでやねん
無理やり対応
やむを得ず、別の対策を練ることに。
簡単に言うと、SSLRequireSSL
を利用して、HTTPで来たら403にし、そこからHTTPSへリダイレクトする。
順番に行くと、以下。
-
http://mydomain.jp/basic/
(BASIC認証範囲)にアクセス - SSLRequireSSLがあるので、403エラー(BASIC認証しない)
- ErrorDocumentで指定したPHPを実行
- PHP内で
header("Location: https://mydomain.jp/basic/");
が実行されてリダイレクト - BASIC認証実施(1回目)
htaccess
# httpでアクセスされたら403
SSLRequireSSL
# 403の飛び先を指定
ErrorDocument 403 /mydomain.php
# Basic認証
AuthType Basic
AuthName ""
AuthUserFile /html/www/htdocs/mydomain/basic/.htpasswd
require valid-user
<Files ~ "^https:*\.(pdf|html|php|jpg|jpeg|gif|png)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>
結びに
一応外向きではないので、SEO的なことなどは考慮していない。個人情報を扱うわけでもないし、とりあえず目的は達している。
いるのだが、これで良いのだろうか。いや良くないのは確かなんだけど。なんかこう、モヤっとするというか。言いようのない気持ち悪さがある。
詳しくてお時間ある方にご意見頂ければ幸いです。