飴屋

開発日記

2017/9/19

管理サイトを順次SSL化し始めているのですが、そのときに気が付いたのでメモ。

https://soft.candychip.net/?%e9%96%8b%e7%99%ba%e6%97%a5%e8%a8%98

このサイトなどは元々Pukiwikiを使っていたので、各記事が↑こんな感じのURLになります。マルチバイト文字がエンコードされているわけです。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

サイトのプロトコルを統一するために.htaccessファイルに↑こんな記述を加えて、http経由のアクセスはhttps経由になるようにリダイレクトさせました。

http://soft.candychip.net/?%e9%96%8b%e7%99%ba%e6%97%a5%e8%a8%98

では、↑このURLは無事にhttps経由の同じリソースにアクセスされるかというとそうはならないのでした。

http://soft.candychip.net/?%25e9%2596%258b%25e7%2599%25ba%25e6%2597%25a5%25e8%25a8%2598

リダイレクト先は↑こんな感じになってしまいます。エンコードで付与された「%」文字が再エンコードされて「%25」になってしまっているわけです。これではhttp経由でアクセスしてきた方は変なURLにリダイレクトされてしまうのでした。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

対策は簡単でした。RewriteRuleに「NE」オプションを付与してあげるだけです。確か「NE」は「noescape」のエイリアスです。

2017/9/1

このサイトをPukiwikiで長いこと更新してきましたが、自前のWikiシステムに換装しなおしました。一部機能はそのままでは使えなくなりましたが、省略したり、作り直したり、ある程度は対応しました。

それとともにhttps化作業も行いました。

2017/1/9

新年早々、このサイトでも使用しているPukiWikiの編集権限アカウントのログインができなくなったので、解決したお話。直前に行った行為の中で怪しいのが、サーバーで使用するPHPのバージョンを5.3系から5.6系に上げたことだったので、5.3系に戻してみるもログインできないままでした。

そこでPukiWikiのオーソライズ系のスクリプト(lib/auth.php)を覗いてみることに。BASIC認証のダイアログへの入力値がどうなっているか確認してみたところ、$_SERVER['PHP_AUTH_USER']も$_SERVER ['PHP_AUTH_PW']も空でした。

セキュリティ関連ソフトが悪さをしているのかもとも思ったのですが、それもなさそうなので、さらに調べたところPHPの高速化にFastCGIを使うと同様の事象が起こるとのこと。しかしFastCGIの設定を行った記憶はありません。

悩んだ結果、やはりPHPのバージョンを5.6系に上げた際に自動的にFastCGIを有効にする設定もされていたのが原因でした。5.3系に下げたあともFastCGIは有効なままになっていたのが原因でした。無効にしたら認証が通るようになり、こうして日記も書けました。

FastCGIを有効にしつつFastCGIの設定を変更してBASIC認証を使うようにもできるとかなんとかとのことですが、とりあえず、このままにしておきます。PukiWikiを使い続けているのも、そろそろ限界な気がするし、リプレースを考える時期なのかもしれません。

(追記)

SetEnvIfNoCase Authorization "^(Basic .*)$" HTTP_AUTHORIZATION=$1

.htaccessに↑このように追記すればよいらしい

Last-Modified