ka2.orgにSSLを導入する・後編

中間証明書のインストールで挫折していたSSL導入作業は、サポート担当の方に証明書の代行インストールを行ってもらい、あっさり動くようになった…。
ただ、なんで中間証明書のインストールが上手く行かなかったのは不明で自分的にスッキリしなかったので、設定済みのSSL設定を覗いてみた。

そうしたら、「発行された証明書(必須)」の欄に、 発行されたサーバ証明書+中間証明書(ルート証明書付き)をCHAIN形式 で登録されていて、「発行された中間証明書(任意)」の欄にも 中間証明書(ルート証明書付き) が登録されていた。冗長になるが、両方に中間証明書を設定しておけば最初から上手く行っていたのかもしれない。

まぁ、これで気分的にも納得して、無事JetPackの連携も通るようになってひと段落…とはいかなかった。

HTTPSでサイトアクセスしたところ、Google AdSenseの広告が出力されていなかったのだ。HTTPSプロトコル下でAdSenseの埋め込みコードが正常に動作していないようだ。これはAdSenseのスクリプト中の読み込みURLを変更すると改善できる。

つまり、http://pagead2.googlesyndication.com/pagead/show_ads.js から、//pagead2.googlesyndication.com/pagead/show_ads.js に変更してあげる必要があるのだ。

ついでに、GoogleAnalytics側で https://ka2.org のサイト設定を追加してHTTPS側の分析も行えるようにしておく。Google Analyticsの設定画面からプロパティ設定でデフォルトのURLをhttps側に設定して、ビューにも‘https://ka2.org‘を追加しておけば、HTTP/HTTPSとで別々にトラフィックを分析できるようになる。

本当はこの機にGoogleTagManagerを導入して、Googleのすべての外部スクリプトの管理を一元化してしまおうかとも思ったのだが、それはまた別の機会に行うことにした次第。

さて、大抵HTTPSサイトにて良く発生するエラーが「プロトコル混在エラー」というやつだ。これは、HTTPSで表示されるページ内からHTTPプロトコルでの通信が発生するとエラーとなるもの。
ありがちなのが、外部SNSのウィジェットの呼び出し(FaceBookの「シェア」ボタンや、Twitterの「ツイート」ボタンなど)や、上記の例のようにGoogleや各種CDN経由での外部JavaScript呼び出しがHTTPSではなくHTTPでの通信になっている場合におこる。
HTTPでページを表示している時にはHTTPとHTTPSが混在していてもエラーにならないので、見逃しがちなのだが、HTTPSサイトにする場合は、プロトコルの統一が重要で、これをやっておかないと、せっかく証明書を入れても安全性を訪問者にアピールできなくなる。

私の ka2.org もプロトコル混在エラーがいくつか出ていたので、修正を行った。
WordPressサイトをHTTP型からHTTPS型にするときの実際の手順は下記のような感じになるかと。

  1. 管理画面の「設定」「一般」で「WordPress アドレス (URL)」と「サイトアドレス (URL)」を「https://サイトURL」というようにHTTPSプロトコルの方をメインのURLにする(これによってテーマ中でbloginfo('home')get_option('siteurl')でプロトコル付きでURLを生成している部分がHTTPSに対応できるようになる)。
  2. テーマやJavaScriptの中で「http://」で始まる外部URLのAPIを呼び出している部分を検索して、「https://」のURLに書き換えるかプロトコルなしの「//」から始まるURLに書き換える(※基本的にfacebookやtwitterといったウィジェットを提供しているSNSはHTTPSプロトコルに対応している。もし提供先がHTTPSに対応していなかった場合はHTTPSサイトでは利用できなくなるので注意が必要)
  3. サイト内の記事などで HTTPサイト時代にフルパスで画像を貼り付けていたりすると、HTTPSでアクセスした時にそれらの画像がプロトコル混在を引き起こしてしまう。私の場合、サイト内の記事への画像貼り付けはMarkdown形式(JetPackのマークダウン機能を利用)で、かつ相対パスで指定していたので、特に混在は発生しなかった(見逃しがちなプロトコル混在画像としては、favicon等のサイトのアイコンや、OpenGraphのメタとして指定する画像パス等がある)。

結論的に、WordPressのサイトを作る時は、普段からURLのプロトコルが固定化されないように気を付けておくと後からSSL証明書導入した時などが楽になるということだ。
これからSSLサイトがWebのデファクトスタンダードになっていくハズなので、今後はSSLありきでWeb作らないといけなくなると思う。

──と云うことで、色々とあったが、ウチのサイト「ka2.org」もようやくSSLで暗号化されたセキュアなサイトとなった。一応、めでたし、めでたし…だろうな。

Leave a Reply

Your email address will not be published.