常時SSL化の勧め

こんにちは!エンジニアのA.Yです。
今回は、サイト全体をSSL化とする「常時SSL化」についてお話しようかと思います。

そもそもSSLとは

SSLとは、インターネットなどのTCP/IPネットワークでデータを暗号化して送受信するプロトコル(通信手順)の一つ。データを送受信する一対の機器間で通信を暗号化し、中継装置などネットワーク上の他の機器による成りすましやデータの盗み見、改竄などを防ぐことができる。

引用元:IT用語辞典

常時SSL化とは

かつてSSLは個人情報を含む情報の送受信(フォームなど)をする際にのみ用いられるのが一般的でしたが、今ではサイト全体をSSL化することが珍しくなくなりました。
常時SSL化とはその名の通りサイト全体をSSL化することで、多くのメリットがあるためSSLを取得する場合は、積極的に常時SSL化をすることが推奨されます。

常時SSL化されているサイト一例

Google
Yahoo
Twitter
facebook
PayPal
自由民主党
株式会社レインボー・ジャパン

常時SSL化のメリット

常時SSL化のメリットは下記のようなものが挙げられます。

盗聴の防止/パケット改竄の防止

近年、盗聴やパケット改竄の懸念が増えている背景には、爆発的に普及するスマホの存在があります。
世界的にスマホ利用者の多くが駅や喫茶店、ネカフェなどで提供されているWi-Fiのアクセスポイントを利用していますが、端末とWi-Fiの通信を傍受することは有線の接続に比べて楽に行うことできるため、通信内容が暗号化されていないとそれだけでCookie情報が盗まれたりセッションハイジャックなどのリスクを生むことになります。

なりすましの防止

これは間接的な効果になりますが、正規のサイトが常時SSLを採用することで、なりすましのサイト…所謂「フィッシングサイト」に誘導された場合でもユーザがそれに対して気づく可能性が高くなります。
フィッシングサイトの制作コスト・難易度をあげるというメリットがあります。

常時SSL化が常識化することを踏まえての先行導入

Google は 「Marking HTTP As Non-Secure」 と題された文書によって、ユーザーエージェントは、HTTP 接続に対して「安全でない」と表示するように段階的な変更を行っていくべきだという案を提案、意見を募っています。

引用元:WWW WATCH

今までは、

http →一般
https →安全

だったのに対して、

http →安全でない
https →一般

という風に変えていくべきではというGoogleの‎Chromium Security‎ チームの提案です。
近い未来にブラウザがこのような表示になる場合は、企業は積極的にSSLを取得せざるを得ない状況になることでしょう。

SEO効果

このランキングの変更は、グローバルでクエリの 1% 未満にしか影響しませんが、これから長い期間をかけて強化していきます。全体的に見ると、このシグナルは良質なコンテンツであるといった、その他のシグナルほどウェイトは大きくありません。HTTPS は、優れたユーザー エクスペリエンスを生み出す多くの要素のうちの 1 つです。

引用元:Google ウェブマスター向け公式ブログ

Googleは、SSL化されているページを評価すると言っています。

サイト制作におけるリンクの管理

サイト制作においてリンクは相対パスで記述することが基本かと思いますが、ページの一部がhttpsだとそのページへのリンクだけ絶対パスで記述する必要があり、テストと本番での差異が生じます。

常時SSL化のデメリット

SSLネゴシエーションによる負荷

SSL接続することによる負荷は、サーバ側・クライアント側双方にかかりますが、現在のマシンスペックでは気にならないレベルかと思います。

httpのファイルを読み込めなくなる(読み込むとエラーになる)

SSL化されたページでは、httpでのファイルを読み込もうとするとエラーになります。
例えば外部のバナーを貼る場合で、その外部サイトがSSLを取得していなかった場合に、その外部サイトの画像ファイルを直接読み込もうとするとエラーになります。
また、SSLを取得していないサイト…例えばニコニコ動画の動画をサイトに埋め込むようなことはできなくなります。
他にもサイトが広告を出している場合で、広告元のサイトがSSLを取得していない場合は、広告バナーを表示できなくなるなどのリスクがあります。

上記の例のように外部のコンテンツがSSLに対応していない場合は不便を感じることがあります。

URLをhttpsで統一

検索エンジンは、「http://hoge.com/」と「https://hoge.com/」を別ページと見なします。
ですので、URLが2つに分散した状態ではSEO的には不利な状態なため、以下の様な方法でURLの統一化を図ります。

.htaceess

						RewriteCond %{HTTPS} off
						RewriteRule ^(.*)$ http://hoge.com/$1 [R=301,L]
					

metaタグ

<link rel="canonical" href="https://hoge.com/">

まとめ

SSLを取得する際は、特別な理由がない限り常時SSL化にしておくほうが良いでしょう。
しかし、そもそもSSLサーバ証明書の取得は年間で数万円がかかってしまうため、個人レベルではどうしても敷居が高くなってしまっているという現状があり、SSLを取得している個人サイトは皆無と言っていいでしょう。
ただ、今年に入り「Let’s Encrypt」という無料で独自SSL証明書を発行できるサービスも登場しました。
導入にはサーバに関する知識が必要になりますが、逆にそれがクリアできるなら金額面で憂慮することがなくなります。
そういった現状で、今後のSSLに関する現状が変わりつつあるのは間違いないです。