HTTPはWebブラウザーとサーバーの通信規則
HTTPは、Webブラウザーなどのクライアントとサーバーが、リソースをやり取りするためのアプリケーション層のプロトコルです。ブラウザーがURLをもとにリクエストを送り、サーバーがレスポンスを返すことで、HTMLや画像などが取得されます。リクエストには、取得や送信の目的を示すメソッド、対象のパス、ヘッダーなどが含まれます。レスポンスには、処理結果を示すステータスコードや、返されるデータが含まれます。HTTPは通信の手順を定める仕組みであり、それだけで通信内容の安全性を保証するものではありません。
HTTPとHTTPSの違いを比較する
HTTPSは、HTTPによる通信をTLSで保護する方式です。URLのスキームが「https://」の場合、HTTPのメッセージは保護されたTLSの通信路を通って送受信されます。
| 観点 | HTTP | HTTPS |
|---|---|---|
| 通信方式 | HTTPで通信する | HTTPをTLSで保護して通信する |
| 暗号化 | 通常、通信内容は保護されない | 通信内容を第三者に読まれにくくする |
| 接続先の確認 | TLS証明書による確認は行わない | 証明書を使って接続先を確認する |
| 改ざん対策 | 通信経路上の改ざんを検知する仕組みを単独では持たない | 通信内容の改ざんを検知する仕組みを利用する |
| 主な利用場面 | 安全性を要件としない限定的な通信など | ログイン情報や個人情報を扱うWebサイト、APIなど |
ログイン情報や個人情報などを扱うサービスでは、HTTPSを前提に検討します。ただし、必要なTLS設定や運用方法は、サービスの要件や利用環境に応じて確認が必要です。
SSL/TLSはHTTPSの通信を保護する仕組み
TLSは、ネットワーク上のアプリケーション間で安全に通信するためのプロトコルです。主な役割は、通信内容を第三者に読まれにくくする暗号化、通信内容の改ざんを検知する機能、証明書を使った接続先の確認です。SSLはTLSの前身にあたる名称で、現在の技術文脈ではTLSが使われます。一方で、HTTPSに使われる暗号化技術を説明する際に「SSL/TLS」と呼ばれることがあります。
HTTPS接続が確立するまでの流れ
- ブラウザーがHTTPSのURLへ接続し、サーバーから証明書を受け取る。
- ブラウザーが証明書の有効性や接続先との対応、信頼できる認証局から発行されているかなどを確認する。問題がある場合は警告を表示する。
- 安全に通信するための条件を確認した後、通信に使う暗号鍵などを取り決める。
- 以降のHTTPデータをTLSで保護して送受信する。
実際の暗号方式や鍵交換の詳細は、TLSのバージョンやサーバー設定によって異なります。基礎を理解する段階では、証明書を確認して安全な通信条件を整えた後、保護された通信を始める流れとして捉えるとよいでしょう。
SSL/TLS証明書と認証局の役割
TLS証明書は、Webサイトのドメインなどの情報と公開鍵の関係を示すデジタル証明書です。ブラウザーは、証明書の内容や有効期限、ドメイン名との一致、信頼できる認証局による署名などを確認します。認証局(CA)は、証明書を発行し、証明書に含まれる情報や公開鍵との対応を確認する役割を担います。証明書が有効であることは通信保護の重要な条件ですが、そのサイトの運営者やWebアプリケーション全体が安全であることを無条件に保証するものではありません。
現場の開発で確認したいHTTPSのポイント
- HTTPでアクセスされた場合にHTTPSへ適切にリダイレクトされるか確認する。
- 証明書の有効期限、ドメイン名との一致、証明書チェーンを確認する。
- ログイン情報、セッション情報、APIキーなどを、保護されていないHTTP通信で送信しない。
- HTTPSを利用していても、認証・認可、アクセス制御、入力値検証、サーバー設定などの対策は別途実施する。
- 開発・検証・本番環境で証明書や接続設定が異なる場合があるため、環境ごとに確認する。