fc2ブログ

無精で短気で傲慢なプログラマ

UNIX や web やプログラムの技術的なことを中心に。

SSL/TLS 必須ページの .htaccess 設定

http://example.jp/ は http だが、http://example.jp/security/ は SSL/TLS 必須と
する場合の .htaccess 設定。

方法1. バーチャルホスト (VirtualHost ディレクティブ) を別に切る
 これが一番スマートかも。それができない場合は方法2 や方法3 で対応。

方法2. SSLRequireSSL を使う。
 .htaccess に
  SSLRequireSSL
 と書くだけで、そのディレクトリ以下は SSL 必須となる (SSL 以外のアクセスは deny する)。
 httpd.conf に記述するなら
  <Directory "/foo/bar">
   SSLRequireSSL
  </Directory>
 とする。
  マニュアル: http://httpd.apache.org/docs/2.0/ja/mod/mod_ssl.html#SSLRequireSSL

方法3. RewiteCond で判別し、http(80) の場合は他に飛ばす。
 RewriteEngine on
 RewriteCond %{SERVER_PORT} ^80$
 RewriteRule ([^/]*)$ http://%{HTTP_HOST}/$0
  マニュアル: http://httpd.apache.org/docs/2.0/ja/mod/mod_rewrite.html

ちなみに
 SetenvIf SERVER_PORT 80 NO_SSL=1
 Deny from env=NO_SSL
という判定方法は SetenvIf から SERVER_PORT を参照できないため無理っぽい。

さらに余談。Apache-SSL には SSLRequireSSL と逆の働きをする (SSL なら拒否)、
SSLDenySSL というディレクティブが存在する。しかし mod_ssl には SSLDenySSL は
存在しないし、mod_ssl を取り込んだ形の Apache2 にも存在しない (Apache-SSL と
mod_ssl は別物
)。
スポンサーサイト



PageTop

コメント


管理者にだけ表示を許可する
 

助かりました

このページを見てSSL化に成功できました
助かりました

SE | URL | 2008-10-30(Thu)12:51 [編集]