ITエンジニア日記 ~NO SKILL, NO LIFE~

学んだ技術や、気になることをアウトプットしていきます。プログラミング, インフラ, etc...

HTTPとHTTPS

今日は、HTTPとHTTPSという2つのプロトコルについて。
Webサイトを見るときに表示されているURLの頭に付いている "HTTP" や "HTTPS" という文字列。(最近のWebブラウザプロトコル部分が表示されないのもあるけど)
この "HTTP" や "HTTPS" とは何なのかまとめました。

[目次]

1. URL

HTTPを説明する前に、まずはブラウザの上のほうに表示されていたり、入力したりするURL (Uniform Resource Locator)についてみていきます。
URLはインターネット上の住所みたいなもので、下記のような構造になっています。

f:id:masakiXX0:20191114214033j:plain

【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通信を行っています。

f:id:masakiXX0:20191114230244j:plain
HTTPSに対応したサイトには、鍵マークがついている

4. HTTP と HTTPS の違い

HTTPでは、データ(通信内容)がインターネット上を暗号化などされないまま、素の状態でやり取りされます。そのため、悪い人によってデータの通信途中で改竄や盗聴をされる恐れがあります。(これを中間者攻撃(Man in the middle attack)という)
この改竄や盗聴を防ぐために、HTTPSでは通信内容を暗号化して安全にデータをやり取りできるようにしています。

つまり、HTTPとHTTPSの違いは通信内容を暗号化しているか、していないかの違いというわけです。

しかし、通信内容を暗号化して改竄や盗聴を防いでも、通信相手が信頼できなければ意味がありません。そこで、SSLにはWebページ(通信先のサーバー)の所有者が実在することを証明する仕組みも持っています。この正当な所有者であることを保証するものを、**証明書(SSLサーバー証明)といいます。

上記より、HTTPSの役割としては下記2点がとなります。

  • 通信の暗号化
  • Webページの運営者が実在すること証明

5. HTTP、HTTPSの現状

最近はHTTPSが標準(というか当たり前)となっています。
GoogleChromeというWebブラウザでは、HTTPのWebサイトを表示させると警告でるようになっています。
下記は国土交通省のWebサイトですが、HTTPSに対応していないためブラウザのURL欄に警告が表示されています。

f:id:masakiXX0:20191114231051j:plain
http://www.mlit.go.jp/

HTTPSに対応したWebサイトが増えることで、インターネット上の通信がより安全に行えるようになってきています。

しかし、一部大手サイトや国交省のような公官庁のサイトで、まだHTTPSに対応してないところもあるのが現状です。

6. まとめ

HTTPとHTTPSというプロトコルについてまとめてみました。HTTPリクエストとかまだ説明できてないことはあるけど、今回はここまで。
今回も文字多めですが、みなさんの役に立てていただけると幸いです。

参考