Geeklogのhttp, https両対応は少し面倒だった。
2017年10月 8日(日) 00:42 JST
閲覧数 5,455
GeeklogのSSL対応が真面目にやると非常に面倒だった。
これなら、トンネル的な形でSSLしてしまった方がラクだった。
ずっと放置していたSSL対応ですが、今月からChromeでフォーム入力があるページで安全性の警告が出るという事で、急いで対応しました。
https://security.googleblog.com/2017/04/next-steps-toward-more-connection.html
Googleランクを気にする程のBlogでもないのですが、せっかくなので。
GeeklogのSSL対応ですが、httpとhttpsの両対応をという事で実施しました。
事前に調べてから実施してみたにも関わらず、いろいろと手を加える形になりました。
バージョン、カスタマイズによる違いも出てくるので、参考程度に見て頂きたい。
1. コードの修正
数か所修正が必要になります。
このページの情報を元に、追加で修正を行います。
https://wiki2.geeklog.jp/index.php?title=SSLと諜報で運用する
1.1 public_html/lib-common.php
$_CONF['site_url']の設定をSSLにも対応させます。
修正前
1.2 public_html/fckeditor/editor/filemanager/connectors/php/config.php
$_CONF['site_url']を削ります。
修正前
実際には上記だけでは治らず。
以下も編集が必要でした。story.class.phpが必要。
1.3 public_html/admin/story.php
$_CONF['site_url']を削ります。
修正前1
1.4 /system/classes/story.class.php
$_CONF['site_url']を削ります。
4か所あります。全部削ります。
他のファイルと同様に修正します。
2. データの修正
データベースをバックアップして、書き換えてリストアする形で書き換えました。
本当は、プログラム書いてしまった方が良いのだが面倒だった。
バックアップ時は文字コードの問題が出た。古いバージョンから使っている場合は、MySQLのDBのコードがlatin1で中のデータはutf-8という状況が起きてしまっている。
この状態でバックアップデータを編集してしまおうとすると、mysqldumpで文字コードを指定するしかなさそう。
これで相対パスになるので、httpsにも対応できる形になります。
こうしないと画像だけがhttpで残ってしまうのと、記事編集のエディタで「imageX」と表示されなくなります。
リストアは普通にやってしまって問題なし。
と行きたかったのですが、一ヵ所データがバグりました。
gl_maillistの「メールダイジェストを送信しない」「メールダイジェストを送信する」なデータがどうしても切れました。
そのままだとリストアできなかったので、バックアップデータを編集しました。
これなら、トンネル的な形でSSLしてしまった方がラクだった。
ずっと放置していたSSL対応ですが、今月からChromeでフォーム入力があるページで安全性の警告が出るという事で、急いで対応しました。
https://security.googleblog.com/2017/04/next-steps-toward-more-connection.html
Googleランクを気にする程のBlogでもないのですが、せっかくなので。
GeeklogのSSL対応ですが、httpとhttpsの両対応をという事で実施しました。
事前に調べてから実施してみたにも関わらず、いろいろと手を加える形になりました。
バージョン、カスタマイズによる違いも出てくるので、参考程度に見て頂きたい。
- lib-common.php、config.php、story.php、story.class.phpの修正
- 入っているデータに埋め込まれている$_CONF['site_url']展開箇所(画像のURL)を削除
1. コードの修正
数か所修正が必要になります。
このページの情報を元に、追加で修正を行います。
https://wiki2.geeklog.jp/index.php?title=SSLと諜報で運用する
1.1 public_html/lib-common.php
$_CONF['site_url']の設定をSSLにも対応させます。
修正前
$_CONF = $config->get_config('Core');修正後
$_CONF = $config->get_config('Core'); // サーバープロトコルを自動判断 <-- $request_type = (strtolower($_SERVER['HTTPS']) == 'on' || $_SERVER['HTTPS'] == '1' || strstr(strtoupper($_SERVER['HTTP_X_FORWARDED_BY']),'SSL') || strstr(strtoupper($_SERVER['HTTP_X_FORWARDED_HOST']),'SSL')) ? 'SSL' : 'NONSSL'; $_CONF['site_url_nonssl'] = 'http://○○○○○○'; $_CONF['site_url_ssl'] = 'https://○○○○○○'; if( $request_type == 'SSL'){ $_CONF['site_url'] = $_CONF['site_url_ssl']; $_CONF['layout_url'] = $_CONF['site_url'] . '/layout/' . $_CONF['theme']; $_CONF['site_admin_url'] = $_CONF['site_url'] . '/admin'; } // サーバープロトコルを自動判断 -->
1.2 public_html/fckeditor/editor/filemanager/connectors/php/config.php
$_CONF['site_url']を削ります。
修正前
$Config['UserFilesPath'] = $_CONF['site_url'] . $_CONF_FCK['imagelibrary'] . '/' ;修正後
$Config['UserFilesPath'] = $_CONF_FCK['imagelibrary'] . '/' ;
実際には上記だけでは治らず。
以下も編集が必要でした。story.class.phpが必要。
1.3 public_html/admin/story.php
$_CONF['site_url']を削ります。
修正前1
$Config['UserFilesPath'] = $_CONF['site_url'] . $_CONF_FCK['imagelibrary'] . '/' ;修正後1
$Config['UserFilesPath'] = $_CONF_FCK['imagelibrary'] . '/' ;修正前2
$_CONF['site_url'] . '/images/articles/' . $I['ai_filename'])修正後2
'/images/articles/' . $I['ai_filename'])
1.4 /system/classes/story.class.php
$_CONF['site_url']を削ります。
4か所あります。全部削ります。
他のファイルと同様に修正します。
2. データの修正
データベースをバックアップして、書き換えてリストアする形で書き換えました。
本当は、プログラム書いてしまった方が良いのだが面倒だった。
バックアップ時は文字コードの問題が出た。古いバージョンから使っている場合は、MySQLのDBのコードがlatin1で中のデータはutf-8という状況が起きてしまっている。
この状態でバックアップデータを編集してしまおうとすると、mysqldumpで文字コードを指定するしかなさそう。
# mysqldump -u root -p --add-drop-table --default-character-set=latin1 geeklogdb > geeklogdb.sqlバックアップデータから「http://............/images/articles/」な箇所を「/images/articles/」に置き換えます。
これで相対パスになるので、httpsにも対応できる形になります。
こうしないと画像だけがhttpで残ってしまうのと、記事編集のエディタで「imageX」と表示されなくなります。
リストアは普通にやってしまって問題なし。
と行きたかったのですが、一ヵ所データがバグりました。
gl_maillistの「メールダイジェストを送信しない」「メールダイジェストを送信する」なデータがどうしても切れました。
そのままだとリストアできなかったので、バックアップデータを編集しました。
# mysql -u root -p geeklogdb < geeklogdb.sql