はじめに
面接でhttpとhttpsの違いを聞かれて恥ずかしながら、答えられなかった私です。
なんとなくhttpsは安全ってよく耳にするくらいだったのでちゃんと調べたことなかったなあ、と思い今回記事にさせていただきます。
プロトコル
httpの説明の前に、調べていたら、プロトコルというものの理解も必要のようです。
プロトコル(protocol)とは直訳すると議定書とか外交儀礼という意味になります。
ネットワーク界のプロトコルの意味は**コンピュータ同士が通信を行うための規格(ルール)**のことを意味します。ちょっと対象は違いますけとニュアンス似てると思います。
ちなみに医療現場では治療計画や手順の意で使われるそうです。
世の中には様々なPCやサーバーがあり、それぞれいろんなメーカーが開発していますが、それらの通信のルールがバラバラだと同じメーカーじゃないと通信ができない!みたいなかなり面倒なことになります。
そうならないために共通のルールを作ることで異なるメーカーでも関係なく通信できるようにしているのです。
プロトコルにはいろんな種類が存在していて、それぞれが異なった役割を担っています。
それらプロトコルを組み合わせて階層構造にし、体系化したものがネットワークアーキテクチャーです。
ネットワークアーキテクチャーの代表的なものに
OSI基本参照モデルとTCP/IPというものがあります。
※この記事では詳しくは記載しません。
そのTPC/IPの第四層のアプリケーション層に用いられるプロトコルがHTTPになります。
ややこしいですね。。。
プロトコルに関してはまた別で記事にまとめる必要がありそうです。
HTTP
HTTPは「Hyper Text Transfer Protocol」の略です。
webページを表示するためにクライアントとサーバー間で行われるデータの送受信のプロトコルです。
HTTP通信を使ってクライアントとサーバー間でリクエストとレスポンスが行われていますが、リクエストには「HTTPメソッド」や「リクエスト先」などの情報が含まれています。
また、レスポンスには「レスポンスの形式」や「HTTPステータスコード」、HTMLも含まれています。
このレスポンスの情報が変換されてブラウザ上に表示されます。
HTTPS
HTTPSはSecure(安全な)がついただけで「Hyper Transfer Protocol Secure」の略です。
HTTPとHTTPSの違いは通信内容が暗号化されているか否かです。
HTTPはいわば、中身剥き出し状態で通信しているのに対し、HTTPSは暗号化されているので、安全に通信をすることが可能になります。
HTTPでは第三者が通信内容を見たり、編集する可能性があります。
HTTPSの違いの見分け方
HTTPSはURLがhttpsから始まっています。
また、httpsで暗号化されているならば、ページを開いた後にURLに鍵マークのアイコンが表示されています。
SSLサーバー証明書
httpsを導入に「SSLサーバ証明書」というものが必要になります。
これはインターネット上の身分証明書のようなものです。
常時SSL化のために独自SSLという証明書を使用します。これは規模や用途によって**DV(個人向け)、OV(法人向け)、EV(重要な個人情報を扱う法人向け)**という3種類から申請、取得をします。
これらのレベル分けは信頼度を示すもので、EVが最も厳格な審査が行われるとともに、費用も高額みたいです。
とりあえず、SSLを発行することで暗号化した通信が可能になるということを覚える!
最後に
httpとhttpsの違いを探していたら一石二鳥的に周辺の知識もいろいろ学べてよかったなと思いました。
https = 安全である
という認識は間違っているとは言いませんが、仕組みを知ると、誰でも比較的簡単にhttpsの認証が取得できるので、100%安全であるとは言えないなあと思いました。
今回のような、そもそものインターネットの仕組み、コンピューターサイエンスの知識は非常に大事だと思いますし、随時学習していきたいと思っています。