システム開発をしている永松です。
食べ物は甘い物が好きです。
昔、ブラウザって有料だったんですか?という言葉にいろんな衝撃を受けました。
これはただ言いたかっただけです。
常時SSLが広まりきった感がある昨今。
あのSSLが常時使えるようになる日が来るとは、みんながしっかり理解できる日が来るとは、と感慨深く思っていたのですが、 実際理解は広まってなかったことに気がついたので今回のお題はSSLにしてみようと思います。
そもそもみなさんSSLってどんなイメージでしょうか?
SSL = httpsってイメージでしょうか?
この認識でも大体あってるのですが、細かく言うとちょっと違います。
SSLとはSecure Sockets Layerの略で、要はインターネット上で安全にデータの受け渡しをするための通信方法です。
対してhttpsとはHyperText Transfer Protocol Secureの略で、HTTP通信をSSL上で行うことで安全にデータの受け渡しをするための通信方式です。
なので、SSLとhttpsはイコールではなく、SSLの中にhttpsがあるってイメージです。
そんなSSLですが、昔は個人情報を入力するようなページだけhttpsを使っていれば大丈夫でした。
それが今、なぜすべてhttpsにしなきゃいけなくなったのか。
今回はこのような流れでお話を進めていこうと思います。
この流れでまとめられるのか、めちゃくちゃ長くなるんじゃないか、いやいつものことか、と思いつつ、今回もふんわり分かってもらえればと思っています。
序章 HTTPSが必要な理由
インターネットで飛び交っているデータは、通常はサーバーなどの通信相手と1対1でのみデータのやり取りをするもので他人にはデータを見ることはできません。
しかし、この他人のデータを見る方法は少なからず存在します。
そして常時インターネットに繋がるようになった現代ではさらにその危険性は高まっています。
ショッピングサイトで個人情報を入力して送信ボタンを押すと、他人に個人情報が盗まれてしまう可能性があるということです。
じゃあ他人に盗まれないようにすればいいじゃないか、がんばれよインターネット、となるのですが、インターネットの構造上完全に盗めなくすることは不可能なのです。
じゃあどうするんだよ、で考えられたのがSSLです。
このSSLを使うとデータがパソコンやスマホで暗号化され、サーバーで復号化されます。
早い話、パソコン、スマホとサーバーで同じ鍵を持っておいて、送るときに鍵をかけ、見るときに鍵を開けることで通信しようというものです。
これにより、もし他人にデータを見られても、暗号化されているので他人はデータの内容を見ることができなくなる、というのがSSLの仕組みです。
たまに、SSLを使うとデータを盗まれることがなくなる、と聞きますが、盗まれることがなくなるのではなく、盗まれても見れなくなる、が正解です。
※SSLのように、インターネット、というかパソコンの仕組みってだいたい盗まれる前提で設計されてます
第一章 昔は一部でしか使われなかったSSL
20年ほど前のショッピングサイトでは、商品検索などのページは暗号化なしのhttp、個人情報を入力するページではhttpsにするといった作りになっていました。
個人情報がやり取りされるところが暗号化されているのでこの方法でも問題はなかったんですが、単純に考えればサイト全部をhttpsにしとくほうが楽なんじゃないかと思われるんじゃないでしょうか。
ではなぜ必要なところにしかhttpsを使ってなかったのか。
これは、httpsを使うとhttpよりお互いの負荷が上がってしまうという問題があったためです。
SSLは暗号化をして通信するため、送信するパソコンで暗号化し、受け取るサーバーで復号化しなくてはいけません。
さらに、サーバーからの返答も暗号化する必要があります。
この処理が結構馬鹿に出来ない処理のため、乱用するとすぐサーバーの処理能力を超えてしまう危険がありました。
そのため、昔は必要なところだけにhttpsを利用し、極力サーバー負荷を避けつつセキュリティも確保していました。
こんなところにも技術者の涙ぐましい努力の後が。
この頃のサーバースペックは今あなたが持ってるスマホよりスペック低かったんです。
前にも書いたなこの話。
第二章 サーバー以外にかかる負荷
しかし近年はもっすごいパソコンのスペックが上がったため、SSLの暗号・復号負荷は、馬鹿には出来ないがなんとかなるようになったので、スペック上ではすべてのページをSSL化する準備が整いました。
これでスペックの問題は解決しましたが、もう一つ問題が残っています。
それはサーバー証明書の年間費用です。
今でも契約するとそこそこするサーバー証明書ですが、当時はもっと強気な値段設定でした。
年間とはいえなかなか無視できない金額なので、昔はこの年間費用のせいでショッピングサイトを作るか作らないかを悩むお客さんもいらっしゃるぐらいでした。
そんな証明書なので、個人情報も扱わないようなサイトで契約なんてしたくもないのが人情というものです。
昔はまぁそれでも良かったんですが、今はインターネットに繋げる人が増え、扱う情報もどんどん増えてきているためそうも言ってられなくなってきました。
そこに追い打ちを掛けたのがFreeWiFiの出現でした。
FreeWiFiでは不特定多数が自由に繋げることが出来るため、通信を盗むことが有線だけの頃より容易に出来るようになってしまったのです。
とはいえ、そんな簡単に盗めるってものでもないですし、FreeWifiでも色々対策がされているので、そんなに怯える必要はないです。
便利になるための機能が悪用されるという無常。
どちらかを諦めるしかないのかという完全に八方塞がりなこの状況を打破するため、あるプロジェクトが発足します。
第三章 名前はアレなのにすごく崇高なやつ
お金がないなら無料にすればいいじゃない。
そんな言葉から始まったとか始まってないとか、早い話管理するのに人の手がかかるからお金がかかるんだよね?じゃあ人の手がかからないようにすれば無料で証明書が作れるんじゃない?ということでいろんな詳しい人達が集まって非営利団体を設立し、Let’s Encryptという証明書が作られました。
この証明書は、Webサーバーがあればある程度の設定さえしちゃえば自動で証明書が発行できる、自動で更新もできちゃうというもので、これさえ使えば無料で証明書が取得できるようになりました。
つまり、常時SSLを導入する準備が整ったということです。
ハードの進化、Let’s Encryptの誕生により一気に常時SSLが浸透していくこととなったのです。
名前がなんかポップなので大丈夫なんそんなの使って、と言われることはありますが、こんな名前で無料ですが暗号化はしっかりされてますので安心してどんどん使ってください。
ほぅ、Let’s Encryptってそんなちゃんとした証明書なのか、ん?待てよ、そんないい証明書があるのにまだ有料の証明書ってあるよね?あれは何?詐欺?情弱狙ってる?カモられてる?なんて思われる方もいらっしゃるかもしれません。
最後にそのお話だけしておきます。
第四章 ご利用は計画的に
今までSSLの証明書と一言で言ってましたが、実はSSL証明書には3つの種類があります。
- ドメイン認証
- 企業認証
- EV認証
それぞれの違いは簡単にいうと、この証明書でどこまでを証明するか、という違いがあります。
最初のドメイン認証では、そのドメインを保有しているということのみを認証してくれます。
Let’s Encryptはこれに当たります。
次の企業認証では、ドメイン認証に加え組織の実在も認証されます。
最後のEV認証では、企業認証を更に詳しく調べて認証されます。
つまり、単純なサイトで通信さえ暗号化されていればいいよ、というサイトの場合はLet’s Encrypt(ドメイン認証)で全然問題ないのですが、ショッピングサイトなどお金のやり取りが発生するようなサイトの場合は「企業認証以上」の証明書を利用したほうが運営者としての信頼感は高くなります。
ただ、ショッピングサイトだからなんでもかんでも企業認証以上にしなくてはいけないのか?というと、ちょっと悩ましいところではあります。
確かに安全面だけを見れば企業認証以上が望ましいですが、年間費用がかかってしまうという問題点もあります。
なので、立ち上げ時はドメイン認証を使っておいて、ある程度認知度が上がってきたら切り替えていく、という運用もありかと個人的には思います。
ご利用は計画的に。
幕章 安全の提供と享受
今回のブログで、Let’s Encryptが生まれた理由と素晴らしさ、SSL証明書の種類についてふんわりと伝えました。
ふんわりと伝えました。
ただ、サーバー側でどれだけ正しい証明書を渡していても、それを受けるユーザーの理解がないと安全を受けることができません。
最近のブラウザですと、アドレスバーの鍵マークでSSL証明書の内容を見ることが出来るようになっています。
ぜひ普段見られているサイトがどんな証明書を使っているのか。
また、何かを購入しようとされているとき、そのサイトの証明書は大丈夫なのか?といったものを気にしてもらえれば、皆さんのインターネットライフもさらに安全なものになっていくと思います。
色々と怖いインターネットの世界ですが、ちゃんと安全に使う方法も用意されているので、うまく利用して安全を享受しましょう。
おまけ1:証明書って誰でも作れる?
SSL証明書ですが、自分で作ることも実は出来ます。
作っちゃえばちゃんと暗号化もされる有効な証明書が出来るんですが、これをそのまま使うことは出来ません。
なぜなら、これを許してしまうと悪さを企む人が簡単に騙せてしまうからです。
そのため、各ブラウザはここが出してる証明書は安全だということを事前に知っています。
もちろんLet’s Encryptもそのリストに入っています。
もしネットをしている中で証明書が不正だ、などの表示が出た場合はアドレスなどを確認してみてください。
ただし、単純に証明書の更新忘れなどでエラーになっちゃってることもあるので、このエラーが出たらすべてが危険なサイトというわけではないです。
また、証明書のエラーがありますといった画面でフィッシング詐欺をしようとするサイトもあるので、ほんとに気をつけて対応するようにしてください。
わからない場合は無理して進まないが鉄則です。
おまけ2:昔話
なんか毎回昔話を書いてる気がしますが、今日の話で思い出したことがあります。
まだガラケー時代のこと、そこそこ大きなサイトだったので証明書を取ることなったのですが、担当の方が安いほうがいいと最安値の証明書を設定したところ、とある会社のガラケーがその証明書を承認しておらずエラーとなったという苦い思い出があります。
ガラケーなので証明書の保存領域にも限界があり、なんでもかんでも入れられなかったというのが理由だったので、急いで有名な証明書に置き換えたということがありました。
そうやって考えても、ほんとにハードの進化ってすごいですよね。
永松
この記事を書いた人黙々とパソコンに向き合い、少々の無理難題にも粛々と応える、お悟りお開き系エンジニア。AND SPACEの様々なシステム案件を任されているだけでなく、会社全体の運営にも的を射た意見で常々存在感を発揮する。顧客や同僚にいくら駄々をこねられても、淡々と正論を繰り出す姿は、「ナガえもん」と呼ばれて然り。いかなるシステム案件も、最初は粗々で構わないと言い切れるのは、ユーザー目線の「実際の使用感」が大切なことを重々承知しているから。そこからの喧々諤々こそ真骨頂。皆々、度々、多々、救われる。