市役所のオンライン申請
ある市役所では、住民票の写しをオンラインで申し込めます。名前、住所、生年月日が、インターネットを通って届きます。
途中には、駅のWi-Fiや、いくつもの会社の機器があります。それでも中身が読まれないのは、HTTPSを使っているからです。
では、HTTPSは何を守り、何を守らないのでしょうか。
このレッスンのゴール
メモ
HTTPSが何を守るのかを説明できる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| HTTP | Webのページを頼み、返すための決まり | |
| リクエスト | ブラウザーからサーバーへの頼みごと | |
| レスポンス | サーバーからの返事 | |
| TLS | 通り道を暗号化するしくみ | |
| HTTPS | TLSで守ったHTTP | https://shinsei.example.com |
| 証明書 | サーバーが名前の持ち主だと示す書類 |
学生が入力するセルは、このプレビューでは空白です。
HTTPは頼みごとと返事
ブラウザーは、サーバーにリクエストを送ります。「このページをください」という頼みごとです。
サーバーはレスポンスを返します。最初の行の数字で、うまくいったかがわかります。200なら成功、404なら見つからない、です。
HTTPだけでは、このやりとりは誰でも読める文字のまま流れます。
HTTPのやりとりの例
GET /shinsei/form HTTP/1.1
Host: shinsei.example.com
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
HTTPSは三つのことを守る
HTTPSは、HTTPのやりとりをTLSで包みます。これで三つのことが守られます。
一つ目は、途中で中身を読まれないこと。二つ目は、途中で中身を書き換えられないこと。三つ目は、相手が本物のサーバーだと確かめられることです。
三つ目には、証明書を使います。信頼できる発行元が、名前の持ち主だと保証した書類です。
例: 申請フォームで守られること
| 困ること | HTTPだけ | HTTPS |
|---|---|---|
| 駅のWi-Fiで住所を読まれる | 読まれる | 読まれない |
| 途中で申請の中身を変えられる | 変えられる | 変えると気づく |
| 偽の市役所サイトにつながる | 気づけない | 証明書で気づく |
| どのサイトに行ったか知られる | 知られる | 名前は知られる |
学生が入力するセルは、このプレビューでは空白です。
やってみよう: 住所の始まりを見る
urls = [
"https://shinsei.example.com/form",
"http://shinsei.example.com/form",
"https://www.example.com/",
]
for url in urls:
# https:// で始まるときだけ、通り道が暗号化されます
if url.startswith("https://"):
print("暗号化あり:", url)
else:
print("暗号化なし:", url)
# 自分で一つ、http:// の住所を urls に足して実行しましょう
よくある思い違い
注意
鍵のマークが出ていれば、安全なサイトだと思う人が多いです。鍵のマークが示すのは、通り道が守られていることだけです。詐欺のサイトでも証明書は取れるので、名前を必ず確かめます。
証明書の名前を確かめる
ブラウザーは、証明書に書かれた名前と、つなぎに行った名前を比べます。合わなければ、警告を出して止めます。
「.example.com」という証明書もあります。 は、点を含まない一段の名前の代わりになります。www.example.com には合いますが、a.b.example.com には合いません。
証明書には期限もあり、切れると同じように警告が出ます。