本ドメイン(www.markn.org)も遅ればせながらSSLに対応しました。
なぜこんなに遅かったか
実は、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が登録可能でした。
購入も簡単
購入方法は以下の通りです。
- さくらインターネットのSSLのページから申し込み、支払いをします。
- keyファイルとcsrファイルを用意します。私はopensslコマンドを使いましたが、IISやTomcatなど他の方法も含めJPRSの設定マニュアルに詳しいので参考にしてください。
- 認証ファイルをダウンロードし、サーバルートから
/.well-known/pki-validation/
の位置に置きます。このファイルをJPRS側からアクセスしてもらうことで、ドメインの持ち主が正しいことを認証します。 - 証明書ファイルが用意されるので、ダウンロードします。また、この認証の場合中間証明書も必要なので、JPRSのサイトから取得します(JPRS_DVCA_G2_PEM.cer)。
- Apacheの設定ファイルの場所に中間証明書と2.で作ったkeyファイル、ダウンロードした証明書(crtファイル)を置き、confファイルを修正します。
- 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などブラウザによっては警告が出てしまいます。
私の場合は以下のようなことをしました。
- Movable Typeのサイト全体の設定(ブログの設定ではない)のベースURLをhttp://www.markn.org/からhttps://www.markn.org/に変更
- ブログ内のファイルを検索し、http://www.markn.org/となっている個所をhttps://www.markn.org/に変更
- ブログのテンプレートを検索し、同様に変更。特にmt.jsの中はJavaScriptのプログラム内でエンコードされたURL
http%3A%2F%2Fwww.markn.org%2Fblog%2F
のような部分があるので、このhttpの部分もhttpsに変更 - プラグインの中で参照する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時間くらいかかったかな。
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!