暗号化・安全な通信
HTTPS
約 4 分で読めます
最終更新: 2026-03-12
HTTPS とは
HTTPS (HyperText Transfer Protocol Secure) は、Web ブラウザとサーバー間の通信を暗号化するプロトコルです。HTTP に TLS/SSL による暗号化層を追加したもので、通信内容の盗聴、改ざん、なりすましを防ぎます。
ブラウザのアドレスバーに表示される鍵マークが HTTPS 接続の目印です。現在、主要ブラウザは HTTP サイトに対して「保護されていない通信」と警告を表示するため、HTTPS はもはやオプションではなく必須の技術です。Google Chrome の統計では、ページ読み込みの 95% 以上が HTTPS 経由で行われています。
HTTPS の仕組み
HTTPS 通信は以下の手順で確立されます。
- TCP 接続: ブラウザがサーバーの 443 番ポートに TCP 接続を確立する (HTTP は 80 番ポート)。
- TLS ハンドシェイク: サーバーがデジタル証明書を提示し、ブラウザが証明書の有効性を検証する。公開鍵暗号方式で共通鍵を安全に交換する。
- 暗号化通信: 共通鍵を使って 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 も利用可能。