• ベストアンサー

【Apache】httpsのときだけ認証を行うことって出来ますか?

これまで社内向けに使っていたWebサーバを、社外からも利用出来るようにしようと考えています。 社外からやりとりしてもいいように、同じホスト名で、http、httpsの両方が使えるようにしました。 これに加えて、社外からのアクセスにのみ、ベーシック認証を行うようにしたいと思っているのですが、そういった設定は、どのように行うものなのでしょうか? ご存知の方がいらっしゃいましたら、教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • slackware
  • ベストアンサー率59% (22/37)
回答No.4

'http'および'https'でアクセスしたときの DocumentRoot が同一であれば、以下のように すれば実現可能だと思います. 例) DocumentRoot --> /usr/apache/htdocs 社内の IP アドレス --> 192.168.1.0/24 --+--+--+--+--+--+--+--+--+--+--+--+--+--+-- <Directory /usr/apache/htdocs> AuthUserFile /usr/apache/.htpasswd AuthGroupFile /dev/null AuthName "enter username and password" AuthType Basic require valid-user Satisfy any order deny,allow allow from 192.168.1.0/24 deny from all </Directory> --+--+--+--+--+--+--+--+--+--+--+--+--+--+-- 社内(192.168.1.0/24)からのアクセスの場合は、 BASIC 認証のダイアログは表示されません. 社外(192.168.1.0/24以外)からのアクセスの場合は、 BASIC認証のダイアログが表示されます. 他には、'http'と'https'での ".htaccess (AccessFileName )" の 参照先を別管理することもできると思います.

question01
質問者

お礼

出来ましたー!! すごく難しく考えていたんですが、".htpasswd"の設定だけで出来てしまうんですね。 ありがとうございました。

その他の回答 (3)

回答No.3

結論から言えば、”できます”。 >これまで社内向けに使っていたWebサーバ の環境の詳細が分からないので、お尋ねしますが、 内・外の区別は、IPアドレスで判断ですか?

question01
質問者

補足

ご回答ありがとうございます。 中か外かの判断は、IPアドレスでするか、もしくはホスト名を変えようかと思っております。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

ちょっと手間がかかると思うし、手元にあるオライリーのApacheハンドブックを見た限りで(mod_rewriteを使用していないのであまり詳しくない上で)書いているので本当に実現性があるか分かりませんし、ご希望しているものと一致しているのか分かりませんので一応実現可能か分からない1アイデアのとして書きます。 社内向けとバーシック認証が必要な社外用のページを2つ作成し、リライトモジュール(mod_rewrite)のRewriteCondディレクティブあたりでREMOTE_HOSTかREMOTE_ADDRで社内/社外からのアクセスか判断し、社内以外からのアクセスの場合にはRewriteRuleディレクティブでURLを書き換えて用意した社外用のページに飛ばすというのはどうでしょうか? もし、URLのリライトの設定に詳しい方で実現性があるか補足してもらえたらありがたいです。

question01
質問者

お礼

ご回答ありがとうございました。 No.4さんの方法で、どうにか設定することが出来ました。 いろいろ書き込んでいただいて、ありがとうございました。

  • 10gate
  • ベストアンサー率42% (50/117)
回答No.1

こんにちは。 社外と社内を区分けするのが通常IPアドレスだと思うのですが、 それだといいディレクティブがないですね。拒否とかならできるのですが・・ SSLを使うためにホスト名も一緒、と。 もしDNSが社内と社外で別なのでしたら、IPアドレスを分けて、 IPバーチャルホストで可能だと思いますが、DNSが社内外で1つでしたら無理な気がします・・。

question01
質問者

お礼

ご回答ありがとうございました。 No.4の方法で、どうにか設定することが出来ました。