深く考えずにMovable TypeをSSL化したい人は SQLReplace プラグインを使え!
友人が保育所をやっておりまして。そこのWebサイトの構築を運営を手伝っています。最近の様子を更新するついでに、なぜかふと、SSL対応しようと思い立ってしまいました。
そもそも、使っているシステムが古い
運営しているサイトは、株式会社ピコロのコーポレートサイトと、同社が運営する保育施設2ヵ所のサイト。
小規模保育園ココロ(認定小規模保育園)
ピコロキッズクラブ(無認可託児施設)
株式会社ピコロ(運営企業)
サーバーはさくらのレンタルサーバー、システムはMovable Type 5.2.13。もう何年も昔に保守期限が切れている製品です。MT6に移行しなかったのは、さくらのレンタルサーバーが対応しなくなったことと、ライセンス仕様が変わったこと。
さくらのレンタルサーバーではワンクリックでCMSをインストールできます。今はWordPressとConrete5を選べますが、以前はMovable TypeとWordPressの二択でした。構築当時はMovable Typeの方が国内で利用実績が多くネット上に情報が多かったことが選択の理由。ひとつのプラットフォーム上でドメインの異なる複数のサイトを管理できるのも用途に合っていました。ただ、開発側の変化があったためか、さくらのレンタルサーバーではクイックインストールや自動アップデートの対応はされなくなっていました。
ただ、セキュリティにうるさく言うようなサイトじゃないし、まあいいかなって。
ガラケーからでも更新できるシステムを
保育園の職員の方にブログを更新してもらうためのハードルは、とってもとっても高いんです。まず、ほとんどPCを使いません。そもそも、座ってPCを使っているような時間はありません。そして、ITスキルも持ち合わせていません。
でも、携帯電話で子どもたちの様子をたくさん撮影しているので、それを使って更新してほしい。そのために選んだのが、メールでのブログ更新でした。大手さんのブログサービスでは、一時期多く採用されていましたよね。あれを実装しました。
使っているのはスカイアークさんが公開しているMailPack 1.74。ってこれも古いですね。最新バージョンは1.9のようです。
Movable Typeで簡単携帯投稿!メール投稿プラグイン:MailPack
撮影した写真を添付して指定したメールアドレスに送ってもらうだけで、ブログを更新できます。ありがとうMailPack! おかげで、2018年暮れまでガラケーを使っていた社長でもブログを更新できましたよ!
“s”を付ければいんじゃね? って思ってしまった
そんな訳で古いMTを使って保育施設のWebサイトの運営を手伝っています。その中でよくある問い合わせが「ブログ投稿したんだけど、日付をイベントの日付に編集しておいてくれませんか」というもの。当日に更新できればいいんですが、イベントのある日ってつまりは普段より忙しい日な訳で、大抵は後日投稿されます。私が管理者権限でログインして、投稿日付を編集して更新して、ポチッと更新ボタンを押す運用です。
今日も、そんな依頼が来て、Chromeを開いてMTの編集画面をいじっていたんです。いつもと同じ作業ですが、今日はいつもスルーしていた部分に気を取られてしまいました。そう、Chromeに出てくる「(!)保護されていない通信」というあれ。SSL化する必要もないしなあと思ってほったらかしにしていたんですが、「昨今はスマートフォンで見る人が多いし、AndroidのメインブラウザはChromeだし、多くの人がこういう警告を目にしているんだよな」って思ってしまったんです。
「httpをhttpsにすればいんだろ、つまり」
そう思ってしまったんです。
“s”を付けるの大変じゃん!
最初にやったのは、さくらのレンタルサーバーの管理画面で、関連ドメインのSSLを有効化すること。無料SSLが使えるのが嬉しいですね。しかもGUIでポチポチっとして数分待つだけ。カップラーメン並みに簡単です。
さて、あとは素材内の文字列にhttpってのを探してhttpsに置き換えていけばいんじゃね? って思ってMTの管理画面に戻りますと……。そもそもサイトURLからして「http://」と固定で書かれていました。読み込むモジュール類や変数類もhttpを前提にしていて……。ある変数などは「これhttps対応してなかったら使えなくね?」と思って調べたら、引数でhttpとhttpsを使い分けられるようになっていました。MT6から……。
「……。」ということばかりで、さあこれは大変だぞということがわかってきました。MT5でhttps化する方法を調べようと、Google先生にお伺いをたてます。てゆーか手を付ける前に調べろよ俺。
そこで見つかったのが、このようなページ。
Chromeの為に古いMT( Movable Type 6)を常時SSL対応するのが大変だったのでやり方メモ
普通のサイトなのにただSSL化されていないというだけで
アドレスバーの左側に赤で警告されます。
こんなん表示されたら怪しいスパム潜んでる詐欺サイトみたいやん!
まさに同じ理由でのSSL化ですね。よしよし、こちらを参考にと思いきや、こんな文言を発見。
2時間くらいかな?って軽く考えていたら丸一日かかりました。
えっ、丸一日かかるの? Web屋さんが作業して丸一日って、俺どんだけかかんの? と絶望的に。
頼りになるのはエンジニアの知恵! コミュニティ万歳。
やべーと思いながら、Facebookに苦悩を投稿。そうしたらコメント欄で暖かい救いの手を延べてくれた方がいました!
細かい修正もありますが。MT内部だけであれば、おいらのプラグインである程度治せるです。
どうぞw
データベース内の文字列を一括置換するMovableTypeプラグイン:SQLReplace
コミュニティ取材でお会いして、お話をうかがった方からのコメントでした。しかもMailPackを提供してくださっているスカイアークにゆかりの方。ああ、持つべきは技能を持った知り合い。エンジニアとネットワークを持てるコミュニティってすばらしい!
で、どーなったかというと、小一時間で解決!
SQLReplaceは、データベース内の任意の文字列を置換するプラグインです。管理画面からいじれないような部分も置換してくれちゃいます。ただし、MTのプラットフォーム単位で使うため、同じプラットフォームで運営しているすべてのWebサイトに影響が及びます。
今回は http:// を https:// に置換しました。置換自体は、あっという間。設定画面に「http://,https://」と書き込んで、各ブログを更新したら終わりです。すっばらしい〜!
で、なぜ小一時間もかかったのかというと、これにハマったからなのでした。
Movable Typeにインストールしたプラグインがプラグイン一覧に表示されない件について
こんなことにもすぐに気づかないでおたおたしてしまうとか。ちょっと自分が情けなくなりました。「知っている」と「普段から使っている」との隔たりを感じましたね。エンジニアの方、改めて尊敬します。