サイトをSSL化(https化)することへの重要性を紹介します。
本記事では、以下の方向けの記事となっています。
・SSL(https)とは何かを知りたい方
・SSL化(https化)することの重要性を知りたい方
はじめに
本記事では、サイトをSSL(https)とは何かの解説、およびSSL化(https化)することの重要性について解説したいと思います。
WEBサイトを閲覧する際の動作(HTTP通信とHTTPS通信について)
まずはじめに、皆さんがこのブログを含め、普段見ているWEBサイトを見るという作業は、どのようにしてできているものなのでしょうか?
皆さんが普段WEBサイトを閲覧する際は、ブラウザと呼ばれるソフトを使用してWEBサイトを閲覧しています。ブラウザの代表的なものとして、「Google Chrome」や「Apple Safari」、」Microsoft Edge(またはInternet Explorer(IE))」と呼ばれているものがあります。
皆さんが見ているWEBページは、皆さん自身のパソコンに保存されているものではなく、他人のパソコンに保存されているWEBページのデータをもらってWEBページを閲覧しています。
通常、このような関係の場合、皆さんのパソコンは「クライアント」、他人のパソコンのことを「サーバ」と呼びます。
WEBページは世界中のどこのページでも見られることができるため、クライアントとサーバはパソコンの種類やOSも違えば、使用している言語も違うことがあります。
そのため、クライアントとサーバの状態に関わらず、両者の間で通信する取り決めを決めておく必要があります。
取り決めを行っていない場合、例えばクライアントが「WEBページを見たいです」という情報をサーバに送信しても、受け取ったサーバはクライアントから「WEBページを見たいです」という情報が来たのではなく、「ファイルを転送してください」という意味でとらえてしまう場合もあるわけです。
そのようなこと防止するため、クライアントとサーバ間の通信では、HTTP(Hyper Text Transfer Protocol)と呼ばれる世界共通の法則(プロトコル)を用いて通信を行います。
WEBサイトを皆さんが見ているサイトはほぼ必ず、初めに「http(s)://」がついています(一部のブラウザだと表記が省略されて見えている場合もありますが)。この宣言を行うことにより、クライアント(あなた)とサーバ(WEBページのデータが置いてある場所)のパソコンの種類やOS、使用している言語などに関わらず、クライアントの要求に従った情報をサーバー側は提供します。
正確には、HTTPは、「WEBページをやり取りするサーバーとクライアント間の取り決め」となります。
つまり、インターネットをする上でのルールの中の一部であり、ほかにもいろいろ種類があります。
さて、WEBサイトを閲覧する際はHTTPでやり取りを行うという話を行いました。
ここで、クライアントとサーバーの間に第三者が介入し、データを盗聴しているものとします。
HTTPの場合は、暗号化がされていない平文のままデータが送受信されているため、クライアントとサーバー間でどのようなデータのやり取りが行われているか、流れているデータを取得するだけで分かってしまいます。この場合は、クレジットカード情報のやり取りが行われている場合、すべての情報がわかってしまうため、危険すぎてとてもインターネットでは使えません。
ですが、実際の皆さんは買い物をするときにクレジットカード情報などを入力して買い物などを行っていると思います。たまたま第三者に悪用されていないだけなのでしょうか?
実は、セキュリティが重視される情報をやり取りする場合の通信は、HTTP通信ではなく、HTTPS通信が行われています。
HTTP通信は、平文で通信していますが、HTTPS通信はデータが暗号化された状態で通信されています。
暗号化されたデータは、暗号化を元に戻すための鍵が必要です。鍵があれば正しい情報に復元することができますが、第三者は鍵を持っておらず、情報を正しく復元することができないため、データを盗聴されても安心というわけです。
さて、クライアントとサーバー間でHTTPS通信を行うためには鍵などの情報が必要です。ここで出てくるのがSSL通信(証明書)と呼ばれるものが登場します。
SSLとは
SSLとはSecure Sockets Layerの略称です。SSLは送受信しているデータを暗号化するための技術となっています。SSLの後継としてTLS(Transport Layer Security)と呼ばれるものもあり、基本的に現在のSSLと言っているものはほぼこのTLSのことです。基本的な暗号化などの考え方は一緒のため、ここではSSLについて説明します。
通常、WEBサイト等の閲覧は、初めの通信は、クライアントからサーバーに向かって通信が行われます。クライアントが、サーバー間との通信を暗号化して行いたいと思った場合、SSL通信(HTTPS通信)の要求をサーバー側へ送信します。
「暗号化通信したい」とクライアントから受け取ったサーバーは、クライアントに対して、「公開鍵」と「サーバー証明書※」をクライアントに送付します。
クライアントは、ここで、「共通鍵」を作成します。作成された「共通鍵」を先ほどサーバーからもらった「公開鍵」で暗号化し、サーバーへ送信します。
「共通鍵」を受け取ったサーバーは、サーバーだけが持っている「秘密鍵」を使って「公開鍵」で暗号化されたものを「解錠」し、「共通鍵」を取り出します。
以降の通信は、二人が持っている「共通鍵」を使用して互いに通信を行います。データを送信する際は、暗号化したいデータを「共通鍵」で暗号化し、暗号化されたデータは「共通鍵」で解錠します。
暗号化されたものを第三者が取得した場合はどうなるのでしょうか?
例えば、第三者が暗号化されたデータを取得した場合、データは共通鍵で暗号化されています。自身は共通鍵を持っていないため、元のデータに戻すことは難しいです。
共通鍵が流出しない限り難しいでしょう。
また、第三者にデータを改ざんされた場合を考えます。データを暗号化する際に、データに対してハッシュ値と呼ばれる数値も送付します。データを復号化した際にハッシュ値と一致するかということを確認して、送信されたデータと受信されたデータが同一であるという担保を取っています。途中でデータが改ざんされてしまった場合は、改ざんされたデータを復号化した際にハッシュ値と一致しないため、送信されたデータと異なるということを検知します。
最後に、なりすましについて考えます。例えば有名企業のなりすましサイトが存在した場合、IDやパスワードを求めてくることになりますが、この時点でHTTPSではなくHTTPでない時点では当然怪しいですが、HTTPS通信を行う場合は、サーバ証明書が認証局から発行されたものが送付されます。サーバ証明書がきちんとした認証局で発行されているものであれば、申請者のドメイン名や組織の情報がきちんと調査されたものが載っているはずですから、なりすましたサイトと本物のサイトを見分けるための基準として採用することができます。
以上が、SSL通信(HTTPS通信)の簡単な説明となります。
SSL化(https化)することの重要性(メリット)
次にSSL化(http化)することの重要性をいくつか紹介します。
セキュリティ面での強化
初めに、セキュリティ面で安全性が高まることです。特に個人情報などを扱う場合は、暗号化通信は必須となります。上記でも説明しているように、盗聴や改ざん、なりすましを防ぐという意味でも導入は必須といえます。
SEO対策につながる
「個人情報も特に扱わないし、個人で解説しているサイトやブログに対してSSL化することへのメリットがあるのか?」
と思われる方も多いかもしません。
Googleでは、SEOとサイトをSSL化していることは関係があると明言しています。
参考URL→Googleのhttps化によるSEOの関係性
Googleは積極的にSSLを導入することを進めており、例えばGoogle Chromeなどでは、非HTTPSサイトにアクセスした場合は、警告が出るようになっています。
参考URL→Google Chromeのhttps対策
警告は、大きく表示されるので、ユーザによっては、安全でないサイトと判断して、すぐに去ってしまうユーザもいるかもしれません。そのため、Googleでの検索上位を狙う場合や、アクセスを増やしたいサイトではSSL対応を行うべきです。
また、企業で個人ブログを見られる方は少ないと思いますが、SSL化されていないサイトはその会社の外部に対するセキュリティの設定などにより、閲覧できないようにしている場合もあります。
例えば自身のページが技術系のサイトであれば、働いている人がアクセスできなくなってしまうため、その影響によるアクセス減は痛いものとなるかもしれません。
SSL導入へのデメリット
SSL(https化)を導入することへのいくつかのデメリットもあります。
費用がかかる(場合がある)
SSLを使用するには、サーバー証明書が必要ですが、基本的にサーバー証明書は認証局が発行します。
証明書費用や設定代行費用などの費用がかかることがあります。ただし、最近では、無料で発行が行える証明書や、例えば現在自身のサイトを運営するめに取得しているレンタルサーバーがSSL対応を行っている場合もあるため、このデメリットは容易に解消できる可能性があります。
設定が必要
最初からSSL認証を取り入れてサイト運営をしている場合はあまり問題ではありませんが、現在は非SSLで運営しており、新たにSSL化(https化)を行う場合は、自サイトが「http」から「https」に変更され、実質的に別のサイトになることを同等です。これらには、例えばレンタルしているサーバー人の設定や、運用しているサイトでの設定変更が必要となります。
SSL化(https化)する上でのサーバーの設定やサイトの設定については、下記の記事を参照ください。
エックスサーバー(XSERVER)でSSL化設定を行う方法
運用しているサイトでhttpアクセスをhttpsアクセスに自動的に誘導する方法
まとめ
本記事で、http通信の基本的な説明と、サイトをSSL化(https化)することへの重要性を説明しました。現在SSL化を行っていない方でもすでに主流になっており、今後はhttpは減少あるいはなくなっていくと思われます。遅れれば遅れるほど、デメリット欄に記載した項目が大きく響いてくるので、できるだけ早いうちから対応を行いましょう。
本記事のおさらいは以下になります。
・SSL(https)とは何か
・SSL化(https化)することの重要性
・SSL化(https化)することのメリットデメリット
コメント