|
現: 2010-03-27 (土) 11:42:24 nao-pon |
| + | #navi |
| + | RIGHT:&rsslink(../); |
| + | #boxdate |
| | | |
| + | * XOOPS の SSL 対応 (http, https どっちでもOK) [#wed8b449] |
| + | RIGHT:&tag(XOOPS,自宅サーバー,SSL); |
| + | |
| + | 気付いている人もいると思いますが、当サイトを SSL 対応としました。http でも https でもどちらでも同じページが表示されます。 |
| + | |
| + | 曲がりなりにもログイン機能を有しているので、このご時世 SSL 対応にしないとと思い立ち、無料で証明書を発行してくれる(個人限定で1年間) [[StartSSL:http://www.startssl.com/]] を知ったので、設定してみました。 |
| + | |
| + | ** SSL 証明書のインストール [#cef8e22f] |
| + | |
| + | - [[無料 SSL 証明書 StartSSL を使う | futuremix:http://futuremix.org/2009/02/startssl]] |
| + | - [[StartCom Free SSL Certificate:http://cryst.tv/experiment/StartComFreeSSL_Certificate/StartCom_Free_SSL_Certificate.html]] |
| + | |
| + | を参考にサーバーの Apache を設定、StartSSL の場合、中間認証局の証明書 [[sub.ca.crt:http://www.startssl.com/certs/sub.class1.server.ca.crt]] も必須なので忘れずに設定する。 |
| + | |
| + | [[sub.ca.crt:http://www.startssl.com/certs/sub.class1.server.ca.crt]] は DER 形式(バイナリファイル)なので、次のように PEM 形式に変換する |
| + | |
| + | mv sub.class1.server.ca.crt sub.ca.der |
| + | openssl x509 -inform der -in sub.ca.der -out sub.ca.crt |
| + | |
| + | なお、Apache 1.3 での SSL は ひとつのIPでひとつのホストしか利用できないので、ネームベースのバーチャルホストではどれかひとつのホストに絞る必要があるので、xoops.hypweb.net 以外のホストは、http にリダイレクトさせています。(そもそも、接続前に証明書が不正だと警告が出るけどね) |
| + | |
| + | ** XOOPS の調整 [#dc58468b] |
| + | |
| + | *** mainfile.php [#vea35a06] |
| + | |
| + | XOOPS_URL を接続により切り替える。 |
| + | |
| + | #code(php,nonumber){{ |
| + | define('XOOPS_IS_SSL', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')); |
| + | if (XOOPS_IS_SSL) { |
| + | define('XOOPS_URL', 'https://xoops.hypweb.net'); |
| + | } else { |
| + | define('XOOPS_URL', 'http://xoops.hypweb.net'); |
| + | } |
| + | }} |
| + | |
| + | ** class/template.php [#b3dd5634] |
| + | |
| + | サイト内リンクをきちんと区分けするため、http と https で、Smarty テンプレート利用時のコンテンツキャッシュを別にする。 |
| + | |
| + | class/template.php の XoopsTpl クラスに次のメソッドを追加し Smarty クラスのメソッドをオーバーライドする。 |
| + | |
| + | これは、XOOPS 2.0.16a の場合だけど、XCL ではプリロードでいけるのかな。 :thinking: |
| + | |
| + | #code(php,nonumber){{ |
| + | function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null) |
| + | { |
| + | if (XOOPS_IS_SSL) { |
| + | $cache_id .= '_SSL'; |
| + | } |
| + | return parent::clear_cache($tpl_file, $cache_id, $compile_id, $exp_time); |
| + | } |
| + | |
| + | function is_cached($tpl_file, $cache_id = null, $compile_id = null) |
| + | { |
| + | if (XOOPS_IS_SSL) { |
| + | $cache_id .= '_SSL'; |
| + | } |
| + | return parent::is_cached($tpl_file, $cache_id, $compile_id); |
| + | } |
| + | |
| + | function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false) |
| + | { |
| + | if (XOOPS_IS_SSL) { |
| + | $cache_id .= '_SSL'; |
| + | } |
| + | return parent::fetch($resource_name, $cache_id, $compile_id, $display); |
| + | } |
| + | }} |
| + | |
| + | ** テンプレートの調整 [#te90b5ae] |
| + | |
| + | $smarty.const.XOOPS_IS_SSL で SSL を判定できるので、適宜場合分けして SSL 側へのリンクなどを付ける。 |
| + | |
| + | RIGHT:&font(90%){&page_comments;}; |
| + | #navi |