HTTP(Hypertext Transfer Protocol:ハイパーテキスト転送プロトコル)は、Webクライアントとサーバー間で情報をやり取りするためのアプリケーション層プロトコルです。HTTPS(Hypertext Transfer Protocol Secure)は、TLS(Transport Layer Security)によって通信を保護するHTTPです。 TLSは通信中のデータを暗号化し、サーバーの身元確認を支援するとともに、送信データが不正に改ざんされていないかを検出します。
HTTPとHTTPSの最大の違いは、通信のセキュリティです。 HTTP自体には暗号化やサーバー認証の機能がありませんが、HTTPSはTLSを通じてこれらの保護機能を提供します。現在の一般公開されているWebサイト、アプリケーション、APIでは、HTTPSを標準で使用することが推奨されます。
HTTPとは?
HTTPは、ブラウザなどのクライアントがリソースを要求する方法と、サーバーがその要求に応答する方法を定義するプロトコルです。Webページ、画像、APIレスポンスなど、さまざまな種類のコンテンツの転送に使用されます。
HTTPはステートレスなプロトコルです。各リクエストは独立して処理できますが、Cookieやアプリケーションのセッション機能を利用することで、複数のリクエスト間でユーザーの状態を維持することもできます。
従来のHTTP接続では、送受信される情報は暗号化されません。そのため、信頼できないネットワークを経由する場合、第三者にリクエストやレスポンスの内容を読み取られたり、改ざんされたりする可能性があります。 HTTPは通常、TCPポート80を使用しますが、別のポートを設定することも可能です。
HTTPSとは?
HTTPSは、HTTPと同じリクエスト・レスポンスの仕組みを使用しながら、TLSによって通信を保護するプロトコルです。
接続を確立する際、クライアントはサーバーのTLS証明書を検証し、暗号化に必要なパラメータをネゴシエーションします。安全な接続が確立されると、アプリケーションデータは通信中の盗聴や、検知されないまま行われる改ざんから保護されます。
HTTPSは通常、ポート443を使用します。HTTP/1.1およびHTTP/2の環境では、TLSは一般的にTCP上で動作します。
HTTP/3もHTTPSと同じ通信の仕組みを使用しますが、HTTPデータはUDPを基盤とする安全なトランスポートプロトコルであるQUIC上で転送されます。いずれの場合も、HTTPはアプリケーション層のプロトコルです。
HTTPとHTTPSの主な違い
| 比較項目 | HTTP | HTTPS |
|---|---|---|
| データの暗号化 | 標準の暗号化機能なし | TLSによる暗号化 |
| データの完全性 | 標準の保護機能なし | TLSによるデータの完全性保護 |
| サーバー認証 | HTTP自体には認証機能なし | 通常はTLS証明書によって検証 |
| デフォルトポート | 80 | 443 |
| 一般的なURLスキーム | http:// |
https:// |
| 主な利用環境 | レガシーシステムや隔離されたネットワーク環境 | 一般公開Webサイト、ECサイト、API、Webアプリケーション |
| ブラウザでの表示 | 「保護されていない通信」と表示される場合がある | TLSの検証に成功すると、安全な接続として扱われる |
HTTPSの仕組みとは?
HTTPSは、次のプロセスを通じてクライアントとサーバー間に安全な通信経路を確立します。
- 接続の開始: クライアントがWebサーバーまたはCDNのエンドポイントに接続します。
- TLSハンドシェイク: クライアントとサーバーがセキュリティ設定をネゴシエーションし、クライアントは要求したホスト名に対して提示された証明書が有効かどうかを検証します。
- 安全な通信: 暗号化された接続を通じてHTTPリクエストとレスポンスを送受信します。
- 完全性の検証: TLSによって、送信データが不正に改ざんされていないかを検出します。
HTTPSは通信中のデータを保護しますが、Webサイト自体が信頼できること、アプリケーションに脆弱性がないこと、ユーザーのデバイスが安全であることまで保証するものではありません。HTTPSはセキュリティ対策の重要な基盤ですが、それだけで包括的なサイバーセキュリティ対策が実現するわけではありません。
企業にとってHTTPSが重要な理由
機密情報の保護
HTTPSは、ログイン認証情報、個人情報、決済関連データなどが、ユーザーとオンラインサービス間で送受信される際に漏えいするリスクを軽減します。
WebサイトとAPIの安全な基盤を構築
最新のブラウザ機能や外部サービスとの連携機能の多くは、安全なコンテキストでの実行を必要とします。また、HTTPSを使用することで、ユーザーは通信が保護されていることをより明確に確認できます。
安全なコンテンツ配信を実現
コンテンツデリバリーネットワーク(CDN)がHTTPSトラフィックを処理する場合、企業はユーザーとCDN間の接続だけでなく、必要に応じてCDNとオリジンサーバー間の接続も保護する必要があります。
通信経路の一部だけを暗号化しても、コンテンツ配信経路全体の安全性を確保することはできません。
HTTPからHTTPSに移行する方法
HTTPからHTTPSへの移行は、一般的に次の手順で行います。
- 対象となるホスト名に対して、有効なTLS証明書を取得して導入します。
- 必要に応じて、Webサイト、アプリケーション、CDNの各エンドポイントで安全なHTTPS通信を設定します。
- サーバー側で恒久的なリダイレクトを設定し、HTTPのURLから対応するHTTPSのURLへ転送します。
- 内部リンク、正規URL(Canonical URL)、サイトマップ、重要な外部連携の設定をHTTPSに更新します。
- HTTP経由で読み込まれているスクリプトや画像など、混在コンテンツ(Mixed Content)を特定し、修正します。
- 証明書の有効性、リダイレクト設定、エンドツーエンドのTLS通信をテストします。HTTPSの設定が安定していることを確認したうえで、HTTP Strict Transport Security(HSTS)の導入を検討します。
CDNを利用している企業では、証明書の管理とCDNからオリジンサーバーへのTLS接続に特に注意する必要があります。
詳しくは、CDNのSSL/TLSセキュリティガイドをご覧ください。
HTTPとHTTPSに関するよくある質問
HTTPSはHTTPより高速ですか?
必ずしもそうとは限りません。TLSの利用には暗号化などの追加処理が必要ですが、HTTP/2やHTTP/3、接続の再利用、CDNによる最適化といった最新の技術によって、通信パフォーマンスを向上させることができます。
実際の通信速度は、プロトコルのバージョン、サーバーの設定、ネットワーク環境、キャッシュ戦略などによって異なります。
HTTPSを使用していればWebサイトは完全に安全ですか?
いいえ。HTTPSは通信を保護しますが、Webサイトに悪意のあるコンテンツが含まれていたり、アプリケーションに脆弱性が存在したりする可能性はあります。
包括的なセキュリティを確保するには、安全な認証方式、アプリケーションの保護、ソフトウェアの更新、継続的な監視などの対策も必要です。
HTTPSとSSL/TLSの違いは何ですか?
HTTPSは、TLSによって通信を保護するHTTPです。
SSLはTLSの前身となる古いプロトコルで、現在では使用が推奨されていません。「SSL証明書」という呼び方は今でも一般的に使われていますが、現在の安全なWebサイトではTLSが使用されています。
HTTP/3ではHTTPSが必須ですか?
HTTP/3は、TLS 1.3を組み込んだQUIC上で動作するように設計されています。通常のWeb環境では、HTTP/3は安全なHTTPS通信に使用されます。