どうも、くーへいです。
前回の記事では、SSLの安全性について紹介しました。
今回はSSL化によるメリット、そしてその中でも私が最大のメリットと感じるHTTP/2について記事にしたいと思います。
SSL化によるメリット
各社のブラウザが非SSLのサイトを見る際には警告を発するという仕様変更を発表してから、各地で半ば混乱するかのように対応に追われる日々が続いているようです。
以前まではSSL化はメリットがあるから行う、という風潮でしたが、最近ではSSL化しないとデメリットが大きいという感じでしょうか。
それでも、SSL化には様々なメリットがあります。
簡単にご紹介します。
なりすましを予防し、通信を暗号化する
これは、セキュリティ面でのメリットと言えるでしょう。
前回の記事でも詳しくご紹介しましたが、SSL化したら100%安全とは言えないものの、今や必須と言えるほど必要なセキュリティ対策です。
前述のとおり、各ブラウザでは非SSLのサイトは警告を発するため、一般的なユーザーからのアクセスは激減するでしょう。
そう考えると、メリットではありますが、非SSLのデメリットの方が大きく感じられるかもしれません。
SEO上、有利になる
かなり前の話になりますが、Google検索においてはSSLを用いたHTTPSをランキングシグナルに使用すると発表しています。
参考:https://webmaster-ja.googleblog.com/2014/08/https-as-ranking-signal.html
実際の影響力はわかりませんが、SEO上、有利になることは間違いないでしょう。
ただ、上記のように非SSLのサイトは表示がほとんどされないような状況になりつつあります。
そう思うと、SSL化のメリットというよりも、こちらも非SSLのデメリットということもできるかもしれません。
HTTP/2対応が可能になる
個人的には、これが最大のメリットであると考えています。
(厳密には、メリットと言える部分がこのことしかないとも考えられますが・・・)
詳しくは後述しますが、SSL化に加えて一定の条件を満たすことでHTTP/2が使用され、サイトの表示が高速化されます。
余談:逆にSSL化のデメリットは?
本記事の趣旨とは少しはなれますが、簡単にデメリットもお伝えしておきます。
暗号化の処理に時間がかかる
当然、暗号化するにも時間がかかりますので、処理速度に影響が出てしまいます。
上記の3つ目のメリットと相反しますが、HTTP/2に対応できていれば、そのデメリットをはるかに凌駕するメリットを得ることができます。
手間がかかる
SSL化にはとにかく手間がかかります。
まず、Webサイトの場合、HTTPで通信する要素が1つでも含まれていると、ページ全体がHTTPS通信できません。
そのため、既存のコンテンツのURL等をすべてチェックし、書き換える必要があります。
また、SSLに使用する証明書には有効期限が定められており、これを定期的に更新する必要があります。
しかし、一般的なレンタルサーバーの場合、自動更新機能が存在する場合があります。
HTTP/2とは?
さて、本題のHTTP/2について説明させていただきます。
私たちがWebサイトにアクセスると、見た目上は1つのページを表示しているわけですが、その裏側ではサイトによりますが数十から数千個のファイルをダウンロードしています。
その通信にはHTTPというプロトコルを使用していますが、このプロトコルにもバージョンが存在するのです。
現状、最も普及しているのは「HTTP/1.1」ではないでしょうか。
HTTP/1.1は、1997年に初版が発表された大変古い規格で、1つの接続につき、1つのデータを要求し、データが返ってきたことを確認してから次のデータを要求します。
言葉にしただけでも効率が悪いことがよくわかるかと思います。
ブラウザや設定によりますが、6つほどの接続数であることが多いので、同時に6つのデータしかやり取りできないことになります。
そこで、2015年に策定されたHTTP/2では、1つの接続でいくつものデータを要求することができ、またデータが返ってくる前に追加のデータを要求することも可能になっています。
プロトコルの仕様上は、いくつでも同時にデータをやり取りすることが可能になります。
Webの高速化に興味を持ったことがある人であれば、「高速化をしたければリクエスト数を減らせ」ということを見たことがあるでしょう。
もちろんHTTP/2でもサイト全体のボリュームが少なくなることは高速化に寄与しますが、無理にリクエスト数を減らす必要はありません。
CSSスプライトといった技術は不要になるでしょう。
HTTP/2にはそのほかにもいくつかの機能が搭載されていますが、割愛します。
HTTP/2で通信するためには
高速化に大きく寄与するHTTP/2ですが、HTTP/2で通信するためにはいくつかの条件が存在します。
SSLであること
HTTP/1.1とHTTP/2では根本的な仕組みが異なるため、ブラウザはあらかじめプロトコルを知る必要がある。
非SSLではこのプロトコルを事前に知る仕組みが存在せず、SSL環境では存在するため、すべてのブラウザでSSL化されていることがHTTP/2の利用条件となるようです。
サーバーソフトが対応していること
HTTP/2で通信するためには、配信元であるサーバーが対応している必要がある。
HTTP/2自体、近年登場したプロトコルであるため、レンタルサーバーだと対応していない可能性も考えられます。
nginxであれば、1.9.5以降、Apacheであれば2.4.17以降のバージョンが必須です。
ブラウザが対応していること
閲覧側のブラウザの対応も必須です。
Window10のIE11、OS X 10.11以降のSafari、Edge・Firefox・Chromeの最新版で対応しています。
参考:Can I use…
対応していない場合はHTTP/1.1で通信されますし、ブラウザ対応で問題になることはないでしょう。
まとめ
サーバーソフトウェアのバージョンというやや大きいハードルがありますが、HTTP/2によって受けられる恩恵は非常に大きなものです。
レンタルサーバーのサーバーソフトウェアバージョンが今後上がることも考えられますので、今のうちにSSL化しておくと良いでしょう。
手間以上の恩恵を受けられるはずです!