HTTPは「Webページを取りに行くための会話ルール」であり、ブラウザはHTTPリクエストを送り、サーバはHTTPレスポンスを返す。ここまではシンプルだが、インターネット上では通信が盗み見されたり改ざんされたり、接続先が偽物にすり替えられたりする可能性がある。
HTTPSは、そのHTTPを TLS で包み、安全に運ぶための仕組みである。このページでは「HTTPの基本 → HTTPSで増える手順 → どこで証明書が出てくるか」を、図を中心に整理する。
HTTPは、クライアント(ブラウザ)が要求を送り、サーバが応答を返すという形で成立している。
HTTPは「何を取りに行くか」を伝えるルールであり、通信の中身を守る機能は持たない。
HTTPSは、HTTPの前にTLSを挟み、暗号化と相手確認を行った上でHTTPを流す方式である。
HTTPと比べて、HTTPSは「HTTPの前にやること」が増える。
「HTTPSはHTTPを暗号化したもの」と言われるが、実際には TLSの手順が前段に追加されている。
TLSの前段で重要なのは、次の2つ。
このうち「本物かどうか」の確認で登場するのが サーバ証明書 である。
ここで引っかかると、ブラウザは警告を出す。つまり証明書は「HTTPSの入口の関所」になっている。
HTTPS(TLS)が守りたいのは、だいたい次の3つに集約される。
運用では、HTTP(80)で来たアクセスをHTTPS(443)へ転送する構成がよく使われる。理由は「利用者の入力や古いリンクがhttpのまま」になることがあるため。
HSTSは「一定期間はブラウザがHTTPでアクセスしないようにする」仕組みで、HTTPSへの移行後に有効になる場面が多い。
この章は「どこが悪いか」を切り分けるための最小セット。
curl -I http://example.com/
curl -I https://example.com/
openssl s_client -connect example.com:443 -servername example.com |
openssl x509 -noout -subject -issuer -dates
この確認は「TLSが通るか」ではなく、「どの証明書が返ってきているか(Subject、Issuer、有効期限)」を確認するためのもの。