WordPressとHTTPS通信 予約入力フォームでSSLを利用するには

HTTPS通信

予約入力フォームには個人情報が入力されるため、SSL通信を実装したいと考える人は多いと思います。が、WordPressサイトでhttps://~アクセスしても画像のような表示になり、諦めていませんか?

さくらインターネットの共有SSLを使ってMTS Simple BookingをSSL対応にする方法

上記サイトをご覧いただきますと、プラグインを利用して予約入力フォームを https に対応させる方法が説明されております。

WordPress のデフォルトテーマ Twenty Twelve を利用すれば、 https アクセスしたとき専用SSLでアクセスした場合と変わりない処理が可能です。

さて、設定方法などは上記サイトにお任せし、ここでは WordPress で共用SSLを上手に使うための方法をまとめてみたいと思います。

表示が崩れたりメッセージが表示される原因は?

  1. 全てのリンクのソースは「https://~」で指定されていますか?
    テンプレートが複数に渡る場合やコンテンツに外部のリンク情報があるため、暗号化されないサイトの参照があると、ブラウザーにより必ず注意が促されます。 

    ウィジェットでアフィリエイトのサイトを指定している場合はどうか、記事やテンプレートで直接httpリンクを入力していないか注意する必要があります。画像は特に気を付けたいところです。

  2. テンプレートで直接CSSやJSのリンクを指定していませんか?
    テンプレートにリンク先を直接指定すると、サイトの表示ではそのリンク先から取り込みます。リンク先を相対指定していれば、共用SSLのようにアドレスが変わってしまうことでファイルが特定できなくなることもあるでしょう。上記プラグインを利用すると Twenty Twelve テーマでは、style.css をhttps://~のリンクに置き換えてくれます。が、直接テンプレートに指定されてしまうと置き換えできなくなります。

共用SSLを利用する場合の方法について、もう気が付いたことでしょう。

そうです、SSLで表示したいページがあれば、ソース(css,js,画像など)に http://~ のリンクがない個別のテンプレートを用意すればいいわけです。

個別のテンプレートを用意することなくプラグインで解決したい場合は、スタイルシートやJavaScriptの読み込みを Twenty Twelve のように WordPress のAPIを利用することで、プラグイン側で解決してくれます。

ところで Twenty Twelve はどこでstyle.cssを組み込んでいるの?

この記事を書くため、どこに style.css が指定されているか探してみましたが見当たりません。headタグの中を見ると header.php テンプレートの wp_head() タグの中で取り込まれているようです。ですが、アクションフックの wp_head が指定されているわけでもありません。

で、functions.php を眺めていると「wp_enqueue_scripts」のフックの処理の中に

wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri());

がありました。

どうやらこれで直接「style.css」を指定せずとも読み込まれているようです。これのおかげでプラグインによりhttpからhttpsへの置き換え処理が動作しているのでしょう。

 SSL通信について

Web上で暗号化通信(SSL)の利用は、暗号化により処理やデータ量が増加するため、表示速度の低下や回線への負担を考えると不必要に利用しない方がいいと思います。ですが申し込みフォームなどでユーザー情報を入力してもらう場合、利用者によってSSL通信でないことを嫌う場合もあり、機会損失の面ではSSL通信を必要とすることも理解できます。

暗号化通信を利用するのは、平文通信による情報は悪意ある人がLANやプロキシなどで情報を簡単に盗み見ることができることです。SSL通信を利用すれば、クレジットカード番号やパスワードなどは盗み見しても内容が分からないため安心な訳です。

このように書くと普段のメールも含めて盗み見されて怖いようですが、公衆LANでパスワードを平文で流さないようにすれば、他人にピンポイントで自分を特定してハッキングされることはそれほど多くないと思います。よほど恨まれていれば分かりませんが。

例に取ると、WordPressのログインはhttpで入力しますが、それでもハッキングの話はログインIDとパスワードを推測できないようにすることが中心です。まぁ、悪意ある人にとってあなたのパスワードやクレジットカード番号には興味がありますが、名前や電話番号には興味がない、ということだと思います。

ところで最近はRapid SSLなど、以前のように年間10万円も支払わなくても2千円前後で導入できます。サイトを見る人が誰かにもよりますが、ログイン管理するサイトではいっそのことサイト丸ごとSSL通信化しておくのも悪くないかもしれません。