というわけで、前回の記事(SSL証明書をLet’s Encryptから取得してみた)からSSLの証明書が準備できたのであとはサーバー側の設定やらを見直して常時SSL化ができるようにしてみました。
フロントエンドがnginxなので設定は簡単
ちなみにこのサイトですが、サーバーのアクセス負荷を考えて通常ブラウザでアクセスされる領域をnginxで構成しています。そのため、常時SSL化のために必要となる
- HTTPプロトコルでアクセスされたときにすべてのアドレスをHTTPSにリダイレクトさせる
- HTTPSプロトコルでアクセスされたときでもリバースプロキシとして動作させる
- ついでにSSLでのアクセスの場合はHTTP2が利用できるようにする
という設定が非常にやりやすかったのがありがたかったです。フロントエンドがApacheだとHTTPSの認証処理の負荷+PHPの実行などキャッシュ処理の関係であまりよくないような気がしているのでこのあたりはnginxの良さが現れていますね。
BlogのパーツでSSLに対応していないものがあるとやっかい
あとはChromeでアクセスしてみてSSLとなっていないものを探してみる、という作業をすることで対応しているかどうかをチェックしていました。常時SSL化を行う場合、ブラウザ側でSSL通信になっていないものはそのURLにアクセスを行わない、といったことも普通にある(というかChromeがそうなっている)のですべてのパーツがSSLに対応しているかどうかも重要になります。
サイドバーで使っているにほんブログ村のパーツはかなり前に設定していたのでSSL化していなかったのですが今回再度パーツのタグを取り直してみるとどちらのプロトコルでも対応できるようになっていたのにびっくり。プロトコルの部分を書かなければ読み込まれたときのプロトコルと同じプロトコルで取得要求が行われるのね…と感心しました。ここは設定を最新のものに変更することであっさり解決です。
問題はカウンターの方です。こちらははてなのサービスを利用していましたが調べてみるとどうもSSLには対応していない様子で常時SSL化を行っているほかのblogでも「SSLに対応していないようなので無効にする」などの対策しかないようです。私も基本は同様の対策をとるしかないと思います。まあ、ほしいのはカウンタとして画像の数字で表示する機能+アクセスログをblog部分だけで保存する機能なのではてなカウンターを使う必要は全くなかったり。GoogleAnalyticsとかを併用すれば十分でしょうかね。
とりあえず常時SSL化の準備が完了
記事のリンクについては内部リンクは前にblogを移行したときにすべて相対アドレスによるものに切り替えているのでプロトコルによる問題は起こらないはずなのであとは適当な時期にURLのRewrite処理を発行してGoogleにHTTPS側のクロールを行わせれば完了ですね。適当に時期を見計らって行いたいと思います。ちなみにすでにHTTPSでアクセスすることはできるようになっています。構造も全く同じなのでどちらでアクセスしても問題は起こらない…はずです。