ja:tips:httpslogin
HTTPS でのログインを強制する
Apache の mod_rewrite を利用すると、DokuWiki のログインで HTTPS を強制的に使用させることができ、平文のパスワードがネットワーク上に流れるのを防ぐことができます。
まず、一般的な URL 書き換えを十分に読み調べておいたほうがいいでしょう。
以下では、Wiki で HTTPS をサポートするための設定が完了しており、同じアドレスで HTTP と HTTPS のどちらからでもアクセスできるものと仮定します。パフォーマンスの理由から、ログインおよびユーザー情報の更新だけで HTTPS が強制される一方、すべての「通常の」Wiki の機能は HTTP 上で動作し続けるものとします。
HTTPS 上で提供された Cookie を HTTP 上でも動作するようにする必要があるため、まず最初に設定項目: securecookie を無効化する必要があります。それから次に .htaccess
ファイルで以下のようなリダイレクト設定を行います。
# 動作モードが login、profile、admin の場合は HTTPS に切り替える RewriteEngine On RewriteCond %{HTTPS} !on RewriteCond %{QUERY_STRING} do=(log|profile|admin) RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [R,QSA,L] # 動作モード show では HTTP に戻す RewriteCond %{HTTPS} on RewriteCond %{QUERY_STRING} (do=show|^$) RewriteCond %{REQUEST_METHOD} GET RewriteRule ^(.*) http://%{HTTP_HOST}/$1 [R,QSA,L]
サーバ名が SSL 証明書の中のホスト名にマッチする場合は ${HTTP_HOST}
を ${SERVER_NAME}
に変更したほうが良いかもしれません。
注意: 上記の設定では、動作モード show だけを HTTP に戻します。これはログイン直後に HTTPS から HTTP に切り替わらない可能性があることを意味しますが、SSL 上での操作中に SSL と非 SSL の「コンテンツの混在」の警告が出ないことを保証します。
- 注意: 上記のコードを動作させるためには、/conf/local.php で “securecookie” を無効化する必要があります。そうしておかないと、ログインがうまく登録されません。これは、securecookie が有効化されていると HTTP 上ではセッション Cookie が Web ブラウザから送信されなくなり、セッションが失われてしまうためです。
ja/tips/httpslogin.txt · 最終更新: 2010-01-05 16:11 by kazmiya