SSL対応、TinyCore LinuxとMovable Typeの場合

本ドメイン(www.markn.org)も遅ればせながらSSLに対応しました。

security.jpg

なぜこんなに遅かったか

実は、SSL化への準備は2年くらい前から始めていました。

Let's Encryptによる無料のSSL証明書を使おうと思っていたのです。ところが、私のところはTinyCore Linuxというちょっと特殊なサーバ環境のため簡単に導入できず、なかなか作業が進まなかったのです。

そうこうしているうちにGoogleの非SSLサイトのページランク低下なども進行し、当サイトもだんだんその影響を受けてきました。2018年7月よりChromeの強制警告も開始しています。

そこで今回はさくらインターネットのSSLを利用することにしました。

安い!

なんといってもさくらのSSL、安いです。

ドメイン認証型の最も安いプランでは1年あたり972円。しかもJPRS (日本レジストリサービス)の証明書、怪しさはありません。

ちょっと気になっていたのが、「JPRSが発行する証明書はjpドメインしか使えないのでは?」ということ。だってjpドメインを登録管理する会社ですから。

結果から言うと杞憂でした。特に問題なくgTLDであるwww.markn.orgが登録可能でした。

購入も簡単

購入方法は以下の通りです。

  1. さくらインターネットのSSLのページから申し込み、支払いをします。
  2. keyファイルとcsrファイルを用意します。私はopensslコマンドを使いましたが、IISやTomcatなど他の方法も含めJPRSの設定マニュアルに詳しいので参考にしてください。
  3. 認証ファイルをダウンロードし、サーバルートから
    /.well-known/pki-validation/
    の位置に置きます。このファイルをJPRS側からアクセスしてもらうことで、ドメインの持ち主が正しいことを認証します。
  4. 証明書ファイルが用意されるので、ダウンロードします。また、この認証の場合中間証明書も必要なので、JPRSのサイトから取得します(JPRS_DVCA_G2_PEM.cer)。
  5. Apacheの設定ファイルの場所に中間証明書と2.で作ったkeyファイル、ダウンロードした証明書(crtファイル)を置き、confファイルを修正します。
  6. Voila!

対応するssl.confの設定例は以下のようになります。

(Apache 2.4.7以前)

SSLCertificateFile /usr/local/apache2/conf/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/server.key
SSLCertificateChainFile /usr/local/apache2/conf/intermediate.crt

(Apache 2.4.8以降)

SSLCertificateFile /usr/local/apache2/conf/merged.crt
SSLCertificateKeyFile /usr/local/apache2/conf/server.key

merged.crtファイルはサーバ証明書と中間証明書をマージしたものになります。

-----BEGIN CERTIFICATE-----
MII...サーバ証明書
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MII...中間証明書
-----END CERTIFICATE-----

以下のようにして作成できます。

$ cat server.crt intermediate.crt > merged.crt

上記で一応サイトのSSL対応はできたことになりますが、実際にはWebページを対応させないといけません。

設定はちょい面倒

Webページの対応ですが、ちょっと面倒です。

特に、既存ページから同じサイト内部ページへのリンクが"http://..."になっていると、Firefoxなどブラウザによっては警告が出てしまいます。

私の場合は以下のようなことをしました。

  1. Movable Typeのサイト全体の設定(ブログの設定ではない)のベースURLをhttp://www.markn.org/からhttps://www.markn.org/に変更
  2. ブログ内のファイルを検索し、http://www.markn.org/となっている個所をhttps://www.markn.org/に変更
  3. ブログのテンプレートを検索し、同様に変更。特にmt.jsの中はJavaScriptのプログラム内でエンコードされたURL
    http%3A%2F%2Fwww.markn.org%2Fblog%2F
    のような部分があるので、このhttpの部分もhttpsに変更
  4. プラグインの中で参照するURLがhttpになっているものがあり、httpsに変更。私の場合はOpenGraphLikeがそうでした。

最後に、.htaccessでhttpでアクセスしてきた人を強制リダイレクトします。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

これで警告は出なくなりました。

作業時間は2時間くらいかかったかな。

こちらもよく読まれています