HTTPS - HTTPS の導入
HTTP に TLS を組み合わせた暗号化通信プロトコル。盗聴・改ざん・なりすましを防ぐ Web セキュリティの基盤。
概念図
実例
TLS 設定のグレードを確認
bash
# SSL Labs でテスト
curl -s "https://api.ssllabs.com/api/v3/analyze?host=example.com" | jq .endpoints[].gradeHTTPS の仕組み
HTTPS は HTTP に TLS(Transport Layer Security)を組み合わせたプロトコルです。
- TLS ハンドシェイク: クライアントとサーバーが暗号スイートを合意し、セッション鍵を生成する
- サーバー証明書の検証: クライアントがサーバーの証明書を認証局(CA)の証明書チェーンで検証する
- 暗号化通信: 合意した暗号方式でデータを暗号化して送受信する
これにより、通信の盗聴・改ざん・なりすましを防止します。
環境別の証明書管理
| 環境 | 方式 | 特徴 |
|---|---|---|
| クラウド(最も一般的) | AWS ACM / Azure マネージド証明書 / GCP マネージド SSL | 無料・自動更新・手動管理不要。CloudFront / ALB / App Service / Cloud LB に直接適用。最優先で検討 |
| 商用 CA(日本企業で多い) | GlobalSign, DigiCert, SECOM, Cybertrust 等 | EV 証明書(組織名表示)が必要な場合や、社内規定で指定 CA がある場合に利用 |
| Let's Encrypt(個人・小規模向け) | certbot + 自動更新(cron / systemd timer) | 無料だが有効期限 90 日。自動更新の設定が必須。個人サイトや検証環境向き |
クラウド環境であれば、マネージド証明書を使えば発行・更新・適用がすべて自動化されるため、証明書の期限切れ事故を根本的に防げます。
導入チェックリスト
- HTTP から HTTPS への 301 リダイレクトを設定する
- HSTS(HTTP Strict Transport Security)ヘッダを有効にする
- Mixed Content(HTTPS ページ上の HTTP リソース)を排除する
- TLS 1.2 以上のみを有効にする(TLS 1.0 / 1.1 は無効化)
- 安全でない暗号スイート(RC4, 3DES など)を無効化する
- SSL Labs(ssllabs.com)で設定をテストする
