暗号化・安全な通信

HTTPS

約 4 分で読めます

HTTPS とは

HTTPS (HyperText Transfer Protocol Secure) は、Web ブラウザとサーバー間の通信を暗号化するプロトコルです。HTTP に TLS/SSL による暗号化層を追加したもので、通信内容の盗聴、改ざん、なりすましを防ぎます。

ブラウザのアドレスバーに表示される鍵マークが HTTPS 接続の目印です。現在、主要ブラウザは HTTP サイトに対して「保護されていない通信」と警告を表示するため、HTTPS はもはやオプションではなく必須の技術です。Google Chrome の統計では、ページ読み込みの 95% 以上が HTTPS 経由で行われています。

HTTPS の仕組み

HTTPS 通信は以下の手順で確立されます。

  1. TCP 接続: ブラウザがサーバーの 443 番ポートに TCP 接続を確立する (HTTP は 80 番ポート)。
  2. TLS ハンドシェイク: サーバーがデジタル証明書を提示し、ブラウザが証明書の有効性を検証する。公開鍵暗号方式で共通鍵を安全に交換する。
  3. 暗号化通信: 共通鍵を使って HTTP リクエストとレスポンスを暗号化して送受信する。URL のパス、Cookie、フォームデータ、レスポンスボディなどすべてが暗号化される。

HTTPS で暗号化されるのは HTTP の通信内容です。接続先のドメイン名 (SNI) や IP アドレスは暗号化されません。ドメイン名の秘匿には DNS over HTTPS や Encrypted Client Hello (ECH) が必要です。

HTTPS が重要な理由

HTTPS は単なるセキュリティ対策にとどまらず、Web サイト運営の多方面に影響します。

  • 通信の保護: パスワード、クレジットカード番号、個人情報などがネットワーク上で平文のまま流れることを防ぐ。公共 Wi-Fi のような信頼できないネットワークでは特に重要。
  • 改ざん防止: ISP や中間者による広告の挿入、コンテンツの書き換え、マルウェアの注入を防止する。
  • SEO への影響: Google は 2014 年から HTTPS をランキングシグナルとして使用している。HTTP のままのサイトは検索順位で不利になる。
  • ブラウザ機能の利用: Service Worker、Geolocation API、カメラ・マイクへのアクセスなど、多くの最新ブラウザ API は HTTPS でのみ利用可能。
  • HTTP/2 と HTTP/3: 高速な通信プロトコルである HTTP/2 と HTTP/3 は、実質的に HTTPS が前提。パフォーマンス面でも HTTPS が有利。

HTTPS の確認方法と注意点

ブラウザで HTTPS 接続を確認する方法と、よくある誤解を整理します。

  • 鍵マークの確認: アドレスバーの鍵マークをクリックすると、証明書の詳細 (発行者、有効期限、ドメイン) を確認できます。
  • Mixed Content に注意: HTTPS ページ内に HTTP で読み込まれるリソース (画像、スクリプトなど) があると、セキュリティが低下します。ブラウザは Mixed Content をブロックまたは警告します。
  • HSTS の活用: HTTP から HTTPS へのリダイレクトだけでは、最初のリクエストが HTTP で送信されるリスクがあります。HSTS ヘッダーを設定すると、ブラウザが自動的に HTTPS で接続するようになります。
  • セキュリティヘッダーとの併用: HTTPS だけでなく、Content-Security-Policy や X-Content-Type-Options などのヘッダーを併用することで、より堅牢なセキュリティを実現できます。

よくある誤解

HTTPS は大規模サイトだけに必要
個人ブログや小規模サイトでも HTTPS は必須です。HTTP サイトはブラウザに「保護されていない通信」と表示され、訪問者の信頼を損ないます。Let's Encrypt で無料の証明書を取得できるため、コストは障壁になりません。
HTTPS にすればサイトは安全
HTTPS は通信経路の暗号化を提供しますが、サーバー側の脆弱性、XSS、SQL インジェクションなどの攻撃は防げません。HTTPS はセキュリティ対策の出発点であり、それだけで十分ではありません。

HTTP と HTTPS の比較

HTTP

通信が平文のまま送受信される。盗聴・改ざん・なりすましのリスクがある。ポート 80 を使用。ブラウザに「保護されていない通信」と表示される。

HTTPS

TLS で通信を暗号化。盗聴・改ざん・なりすましを防止。ポート 443 を使用。鍵マークが表示され、最新ブラウザ API も利用可能。

関連用語

関連記事