Movable TypeをSSL対応にする。

このブログを始めて10数年になる。最初はHTMLをゴリゴリ書いていたが、ここ10年くらいはMovableTypeに頼りきりだ。

世の中的にはWordpress一択という感じだが、ボーイスカウトのページなど他の人に管理を任せているサイトもあるので簡単には移行できないという理由もある。新しい技術は取り入れにくいが、自分の中でもMovableTypeになれてしまっているところがあるのでもうしばらく使っていきたいと思っている。

最近、SEO対策として、googleのいうことを聞かないとアクセス数が伸びないという問題がある。別に自分のブログのアクセスが伸びない分には何の問題もないのだが、団体のブログ管理を預かっている以上、それなりに見てほしいというのが本音だ。

まぁ、実際にはそれ以前の問題が潜んでいたのだが、その話はまたのちほど。

Movable Type 6 本格活用ガイドブック (Web Designing BOOKS) Movable Type 6 本格活用ガイドブック (Web Designing BOOKS)
藤本 壱,柳谷 真志,奥脇 知宏,シックス・アパート株式会社

マイナビ
売り上げランキング : 256986

Amazonで詳しく見る

数年前からgoogleがSSL対応を進めているのだが、SSLの証明書を取るためにはそれなりの費用が掛かるのが問題だった。個人で負担をするわけにもいかないし、アクセス数だけのために団体に金銭的負担を強いるわけにもいかない。

そんなこんなで手をこまねいていたのだが、最近、SSL通信の無料化の話が出てきて、今年から実際に運用が始まったのだ。

Let’s EncryptというSSL証明書の無料発行サービスなのだが、かなりいろんな団体の後押しもあり、簡単にサービスを終了する感じではないのでこのブログに導入することにした。他にも、StartSSLというサービスがあり、無料版を定期的に更新することで、こちらも無料で利用することができる。

で、今回はそのSSL証明書の話はおいておいて、MovableTypeのサイトにSSLを導入するにあたって対応しなければならないURL変換の問題についてメモすることにする。

1.何が問題なのか

問題なのは従来の”http://”のURLでアクセスしてきた場合の応答と、”https://”のURLでアクセスしてきたときの応答だ。

これからブログを立ち上げるという場合は最初からURLを”https://”で始めれば、ユーザーも迷うことはない。しかし、以前からブログをやっていて、”http://”で始まるURLで検索エンジンに引っかかるような状態になっている場合は”https://”のURLに誘導する、もしくは”http://”、”https://”両方のURLでアクセスできるようにしなければならない。

今回は悩んだ結果、従来通りの接続方法である”http://”に加え、”https://”のURLでアクセスしても同じページにアクセスできるようにすることにした。

ここで考える必要があるのは、ブログ内のリンクだ。”https://”でアクセスしてきたときはページ内の自鯖のリンクをすべて”https://”で返し、”http://”でアクセスしてきたユーザーには”http://”を返す必要がある。ブログ内のリンクをどちらかに固定して静的なページをを作ってしまうと、ブログまで飛んで来たときはSSL通信になっていても、次のページに移動した瞬間から非暗号化通信に戻ってしまうという問題が起こることになる。

2.解決法

いろいろ悩んでアクセスに合わせて自分でスクリプト化しようとも思ったのだが、よく考えればMobavle Typeの機能であるグローバルモディファイア を使えば解決することに気付いた。

たとえば。

<script src=”<$mt:StaticWebPath encode_html=”1″$>jquery/jquery.min.js”></script>

↓こう記載する。

<script src=”<$mt:StaticWebPath encode_html=”1″ replace=”http:”,””$>jquery/jquery.min.js”></script>

Movable TypeはURLなど、動的に書き換わる変数をタグという形で保持している。たとえば、mt:StaticWebPath はブログのアドレスを指し示す。このブログだと”http://www.nagoya88.net”だ。このサンプルの場合だとencode_html=”1″がついているので、このアドレスの後に日本語名などのアドレスが続く場合はエンコードされた状態で出力されることになる。

今回は”https://”でアクセスしてきた人には”https://”で、”http://”でアクセスしてきた人には”http://”でURLを返したいのだが、その場合は”//www.nagoya88.net”のように返すと、アクセスしてきたプロトコルに応じたアドレスが返るらしい。

ということは、ブログ内のリンクのURLをすべて、”//nagoya88.net/~”の形で記載しておけば両対応のブログになるということになる。

そこで、今回はMovable Typeのグローバルモディファイアを使う。例えば、タグ表記の後に、オプションで”replace=”http:”,”””と記載しておく。すると、Movable Typeがページを再構築する時点で、”http://”を”//”に自動的に置換する。

つまり、”http://www.nagoya88.net”を”//www.nagoya88.net“に自動的に書き換えてくれるということになる。

ある意味これですべてが解決なので、テンプレート内にある自鯖へのURLが記載されるであろうタグのすべてにこのグローバルモディファイアを記載しておけば解決するということだ。

ということでこのブログに対して対策を講じてみたので、一度”https://”でアクセスしてみてほしい。重大な問題に気づくかもしれないが(苦笑)

この問題についてはまた次回。

Javaで作って学ぶ暗号技術 - RSA,AES,SHAの基礎からSSLまで Javaで作って学ぶ暗号技術 – RSA,AES,SHAの基礎からSSLまで
神永 正博,山田 聖,渡邊 高志

森北出版
売り上げランキング : 218952

Amazonで詳しく見る

コメント

タイトルとURLをコピーしました