HTTPとHTTPS
今日は、HTTPとHTTPSという2つのプロトコルについて。
Webサイトを見るときに表示されているURLの頭に付いている "HTTP" や "HTTPS" という文字列。(最近のWebブラウザはプロトコル部分が表示されないのもあるけど)
この "HTTP" や "HTTPS" とは何なのかまとめました。
[目次]
1. URL
HTTPを説明する前に、まずはブラウザの上のほうに表示されていたり、入力したりするURL (Uniform Resource Locator)についてみていきます。
URLはインターネット上の住所みたいなもので、下記のような構造になっています。
【http】
プロトコル名
ウェブなら http, https
ファイル転送なら ftp
のように用途によって決まっている。
【ittech-nsnl.hatenablog.com】
ドメイン名(FQDN)。
IPアドレスは数字の羅列で人間にとって覚えにくい。じゃあ人間にとって覚えやす文字列を使おう(文字列には意味を持たせることができるから)ってしたもの。
【sample/src】
フォルダ名。サーバー内でファイルが格納されている場所のパス。
【index.html】
ファイル名。省略可能。
Webをページを開くためのURLの先頭にあるのが、今回説明するHypertext Transfer Protocol = httpです。
2. HTTPとは
HTTP (Hypertext Transfer Protocol ) は、WebブラウザとWebサーバーの間で通信するためのプロトコル(通信のための規約)です。
インターネットの利用環境の違い(OSの違いだったり、利用端末の違いだったり)によって通信方法が異なっていたら不便なので、HTTPという共通の通信規約を定めることで、利用環境が異なっていても同じようにデータ通信できるようになっています。
3. HTTPSとは
HTTPS は、Hypertext Transfer Protocol Secure の略で、文字通りHTTPプロトコルがセキュアになったもの。HTTPによる通信をよりセキュア(安全)に行うためのプロトコルです。
HTTPSでは、SSL/TLS (Secure Socket Layer / Transport Layer Security)というインターネット上でデータを暗号化して、安全に通信を行うためのプロトコルを使用してでHTTP通信を行っています。
4. HTTP と HTTPS の違い
HTTPでは、データ(通信内容)がインターネット上を暗号化などされないまま、素の状態でやり取りされます。そのため、悪い人によってデータの通信途中で改竄や盗聴をされる恐れがあります。(これを中間者攻撃(Man in the middle attack)という)
この改竄や盗聴を防ぐために、HTTPSでは通信内容を暗号化して安全にデータをやり取りできるようにしています。
つまり、HTTPとHTTPSの違いは通信内容を暗号化しているか、していないかの違いというわけです。
しかし、通信内容を暗号化して改竄や盗聴を防いでも、通信相手が信頼できなければ意味がありません。そこで、SSLにはWebページ(通信先のサーバー)の所有者が実在することを証明する仕組みも持っています。この正当な所有者であることを保証するものを、**証明書(SSLサーバー証明)といいます。
上記より、HTTPSの役割としては下記2点がとなります。
- 通信の暗号化
- Webページの運営者が実在すること証明
5. HTTP、HTTPSの現状
最近はHTTPSが標準(というか当たり前)となっています。
GoogleのChromeというWebブラウザでは、HTTPのWebサイトを表示させると警告でるようになっています。
下記は国土交通省のWebサイトですが、HTTPSに対応していないためブラウザのURL欄に警告が表示されています。
HTTPSに対応したWebサイトが増えることで、インターネット上の通信がより安全に行えるようになってきています。
しかし、一部大手サイトや国交省のような公官庁のサイトで、まだHTTPSに対応してないところもあるのが現状です。
6. まとめ
HTTPとHTTPSというプロトコルについてまとめてみました。HTTPリクエストとかまだ説明できてないことはあるけど、今回はここまで。
今回も文字多めですが、みなさんの役に立てていただけると幸いです。
参考
- 戸根 勤 「ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識」 日経BP
- aico, 株式会社ディレクターズ 「小悪魔女子大生のサーバーエンジニア日記」 技術評論社
- SSL/STL総合解説サイト:https://www.sslcerts.jp/
- 国土交通省:http://www.mlit.go.jp/