follow me

Geeklogのhttp, https両対応は少し面倒だった。

GeeklogのSSL対応が真面目にやると非常に面倒だった。
これなら、トンネル的な形でSSLしてしまった方がラクだった。
ずっと放置していたSSL対応ですが、今月からChromeでフォーム入力があるページで安全性の警告が出るという事で、急いで対応しました。
https://security.googleblog.com/2017/04/next-steps-toward-more-connection.html

Googleランクを気にする程のBlogでもないのですが、せっかくなので。
GeeklogのSSL対応ですが、httpとhttpsの両対応をという事で実施しました。
事前に調べてから実施してみたにも関わらず、いろいろと手を加える形になりました。
バージョン、カスタマイズによる違いも出てくるので、参考程度に見て頂きたい。
  1. lib-common.php、config.php、story.php、story.class.phpの修正
  2. 入っているデータに埋め込まれている$_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
Geeklogのhttp, https両対応は少し面倒だった。 | 1 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。
Geeklogのhttp, https両対応は少し面倒だった。
投稿者: kometch on 2017年10月 8日(日) 11:07 JST

リダイレクトはされないんですなー(http --> https)
ブックマークしている方は注意したほうが良さげですね。