4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SSL入れたらBASIC認証が2回出る

Posted at

はじめに

Chromeさんをはじめ、SSL対応を当たり前にする動きがあります。
そんな中、起きたできごと、対応した内容を残しておきます。

SSLの設置が終わり、本来の業務に戻った。
拙著:SSLに対応する

後に、「何かBASIC認証2回出ちゃうんだけど」とツッコミが入る。
全部こっちにふらずに調べてよ部署違うんだし
調査して対応することになった。

起きていたこと

  1. http://mydomain.jp/basic/(BASIC認証範囲)にアクセス
  2. 当然のようにBASIC認証実施
  3. 正しいIDとパスワードを入力
  4. ページにアクセス!……って、HTTPじゃねーか!
  5. https://mydomain.jp/basic/にリダイレクト
  6. 当然のようにBASIC認証実施(1秒ぶり2回目)

という感じ。

調べたこと

teratailで同じような問題にあたっている人がいた。
<IF></IF>とかあるのか最近のApacheは便利だなぁ、とか思ってたら、バージョン2.4からだった。
問題のサーバに入っているのは2.2で、使えない。
じゃあバージョン上げちゃいますか、と思ったら許可は出ませんでした。なんでやねん

無理やり対応

やむを得ず、別の対策を練ることに。
簡単に言うと、SSLRequireSSLを利用して、HTTPで来たら403にし、そこからHTTPSへリダイレクトする。
順番に行くと、以下。

  1. http://mydomain.jp/basic/(BASIC認証範囲)にアクセス
  2. SSLRequireSSLがあるので、403エラー(BASIC認証しない)
  3. ErrorDocumentで指定したPHPを実行
  4. PHP内でheader("Location: https://mydomain.jp/basic/");が実行されてリダイレクト
  5. 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的なことなどは考慮していない。個人情報を扱うわけでもないし、とりあえず目的は達している。
いるのだが、これで良いのだろうか。いや良くないのは確かなんだけど。なんかこう、モヤっとするというか。言いようのない気持ち悪さがある。
詳しくてお時間ある方にご意見頂ければ幸いです。

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?