Apache の mod_rewrite を使用するので EC-CUBE でなくとも WordPress などのサイトでも SSL に統一することができる設定方法
eccube/html/.htaccess の末尾に次を追加します。
# HTTPS に統一 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
- RewriteEngine On → mod_rewrite を使えるようにする
- RewriteCond %{HTTPS} off → 条件式に相当。HTTPS がオフだったら次を実行
- RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] → 実行する内容。
「^(.*)$」を「https://%{HTTP_HOST}%{REQUEST_URI}」に置き換える。
^ 行頭、. 任意の一文字、* 直前の文字の 0 回以上の繰り返し、$ 行末。
[R,L] はリダイレクトした後、変換処理をここで終了する、という意味らしい。。。
ドキュメントは次です。日本語ですけれども(ヤッター)、Apache 1.3 のドキュメントと古いです。新しいバージョンのものももちろんございますけれども、英語でニュービーには辛いですの><。
- Apache module mod_rewrite ← Apache 1.3
- mod_rewrite – Apache HTTP Server ← Apache 最新版、英語
そもそもなぜ HTTPS に統一しようと思ったかと申しますと、、、
cookie のセキュア属性を有効にして、セキュリティを高めたかったからです。設定方法は非常にカンタでございまして、php.ini で次の項目を下記のように有効にするだけですわ。
session.cookie_secure = 1
これにより、脆弱性対策がなされるのですけれども、どのような脆弱性、対策であるかは上記リンクの PDF よりご確認ください。無料でよいのですの!?と言いたくなるほど充実した、すくなくともわたくしには、そして信頼の置ける情報が掲載されています。わたくしたちのようのなテキトーなブログよりもよっぽど有益ですわ♪
さた、P 19 にあります、1.4 セッション管理の不備の章の、4-(iii) HTTPS通信で利用するCookieにはsecure属性を加える。これを施したかったのですの。この解決方法の中身を引用いたします。
ウェブサイトが発行する Cookie には、secure 属性という設定項目があり、これが設定された Cookie は HTTPS 通信のみで利用されます。Cookie に secure 属性がない場合、HTTPS 通信で発行した Cookie は、経路が暗号化されていない HTTP 通信でも利用されるため、この HTTP 通信の盗聴により Cookie 情報を不正に取得されてしまう可能性があります。HTTPS 通信で利用する Cookie には secure 属性を必ず加えてください。かつ、HTTP 通信で Cookie を利用する場合は、HTTPS で発行する Cookie とは別のものを発行してください。
引用部分の最終部分に注目ですわ!EC-CUBE のデフォルトのテンプレートのままですと、HTTP とHTTPS のページが混在いたします。すると 2 種類の Cookie を使用しなければならない、ということだと思うのですけれども、これが、わたくし、意味不明ですの><。
- HTTPS ページ → HTTP ページやその逆のページ移動の場合に、一旦 Cookie を削除して、新しく Cookie を作る。
こういうことでしょうか?ですけれども、、、作りなおしたところで漏れては困る情報を作りなおしたとしたら、HTTP ページを巡回している間に盗聴されるケースを考えますと意味ないですの。。。
おそらくわたくしの理解がたりないのでしょうけれども、、、><。
そのようなわけで、エイヤと EC-CUBE の全ページを問答無用で HTTPS 化したのでした。
諦めるのはまだ早い♪この本で勉強すればきっと!
『体系的に学ぶ 安全なWebアプリケーションの作り方』著者名:徳丸 浩、こちらの P 209、4.8.2 クッキーのセキュア属性不備、をマスターすれば先ほど理解不能であった部分がわかり、対策もできるようになる!と存じます。
この本のこの章の素晴らしいところは、Cookie のセキュア属性を付けられないウェブアプリケーションがあることを説明したうえで、対策方法をしっかりと解説用ソース付きで示していることです。
最初が電子書籍の PDF 版、次がアマゾン版の Kindle と物理書籍です。
おわりに
前回、EC-CUBE 本体の設定で HTTPS へ統一することはできませんでした。テンプレートで設定した項目があまり使われていなかったためです。
ですのでこのたびはどんなウェブサイトでもウェブページでも関係ない、Apache で制御することにいたしました。以前投稿した次のページで最後にオマケで紹介した方法と同じ考え方です。
Apache の mod_rewrite によるルーティングは便利ですの。でも複雑で難しく、まだわたくしたちには難しいかしら><。
でも勉強する楽しみがありますわね♪
参考になりましたページを最後のご紹介いたします。大変勉強になりました。愛理がとう存じます!!!
以上です。
「EC-CUBE で全ページ HTTPS にするのに mod_rewrite を使いました★YA★TTA★!」への1件の返信
[…] EC-CUBE で全ページ HTTPS にするのに mod_rewrite を使いました★YA★TTA★! | oki2a24 […]