はじめに
WEB開発をしていると気にしなければいけない「HTTP」と「HTTPS」。
これらの違いについて初心者ながら調べてみたので、まとめます!
間違っている点があればコメントで指摘してくださると幸いです。
結論
結論から言うとHTTPは普通の通信規格、HTTPSは安全を考慮した通信規格です。
HTTP:Hypertext Transfer Protocol (ハイパーテキスト トランスファー プロトコル)
HTTPS:Hypertext Transfer Protocol Secure(ハイパーテキスト トランスファー プロトコル セキュア)
正式名称から見てもわかるとおり、HTTPSは安全なんですね~。
と、コレだけでは何も説明したことにならないと思うので詳しく説明していきます。
そもそもHTTPとは?
HTTP:Hypertext Transfer Protocolはインターネット上でHTMLファイルや画像ファイルをやり取りする時の決まり事です。
例えば、Qiitaを見たいと思ったらグーグルで検索してリンクをクリックしますよね。
そうすると、Qiitaの公式サイトがモニタに表示されて記事を読むことができます。
このクリックすることをリクエストと呼び、情報がモニタに表示されることをレスポンスといいます。
このようにユーザーがサーバーに情報(HTMLファイルや画像ファイル)をリクエストし、それに対してサーバーがユーザーに情報を返すという一連のやりとりが、典型的なHTTP通信となります。
HTTP通信は情報が第3者に丸見え
しかし、このHTTP通信でやりとりされる情報は第3者が簡単に読み取ることができます。
これって滅茶苦茶マズくないですか!?
HTTP通信だとECサイトで入力したクレジットカード情報や自分の住所などが簡単に読み取られてしまう危険性があります。
また情報が読み取られるだけでなく、改ざんされてしまうこともあります。
実際、NSAという米国の国家安全保障局が、HTTP通信でやりとりされたデータを改竄しマルウェアを仕込んでいたというとんでもない事が暴露された歴史もあります。詳しくはコチラ。
国家安全保障
HTTPS通信は情報を暗号化する
そこで導入されたのがHTTPS通信です。
HTTP通信は情報を平文のままやりとりするのではなく、暗号化して通信します。
これにより、第3者に情報を読み取られても書いてある内容がわからないので、安全な通信ができるというわけです。
しかし犯罪者は狡猾
しかし悪意ある第3者は狡猾です。
「暗号化された情報が読めないなら、通信相手になりすませばいいじゃない」ということで、ユーザーの通信相手になりすまし暗号を解読するということを始めました。
これではせっかく暗号化した情報も意味が無くなってしまいます。
SSL/TLSサーバー証明書
ここでの問題は、通信相手が本当に通信したかった相手かわからないということです。
そこでSSL/TLSサーバー認証という手段が用いられます。
SSL/TLSサーバー認証には以下の3つがあります。
名称 | 説明 |
---|---|
ドメイン認証 | ドメイン使用権の認証 |
企業認証 | ドメイン使用権の認証,サイト運営組織の法的な実在を認証 |
EV認証 | ドメイン使用権の認証,サイト運営組織の法的な実在を認証,サイト運営組織の物理的な存在を認証,承認者・署名者の認証 |
下に行くほど安全性の高い認証になり、取得が難しくなります。 | |
サイト運営者がこの認証を取得することで、「ここは第3者に本物と認められたサイトですよ」と証明することができ、なりすましを防ぐことができます。 |
Qiitaの認証を確認してみよう
①
QiitaのホームページにアクセスしURLの錠前マークをクリックすると、「証明書」と表示されるのでクリックします。
②
「証明書」ダイアログが表示されるので、「詳細」タブに移りサブジェクトをクリックします。
③
CN(コモンネーム)=Qiita.comとなっていることが確認できました。
これってドメイン認証しかしていないということなのだろうか?
詳しい方、ぜひコメントで教えて頂ければ幸いです。
まとめ
①HTTPSはHTTPと比較して安全だよ。
②HTTPSは情報を暗号化するよ。
③HTTPSはSSL/TLS証明書を用いて通信相手の信頼性を担保するよ。
以上になります。少しでも良いと思っていただけたらLGTMをよろしくお願いいたしますm(_ _)m