HTTP 対 HTTPS ハンドシェイクとは何ですか
今日は、HTTP スリーウェイ ハンドシェイクとは何か、HTTPS ハンドシェイクのプロセス、および HTTPS が安全である理由をまとめました。
前提
これら 2 つのハンドシェイクを説明する際、事前に説明しておく必要があることがいくつかあります。
HTTP と TCP/IP の違いは何ですか?
TPC/IP プロトコルは、主にネットワーク内でデータが送信される方法を解決するトランスポート層プロトコルであり、HTTP は主にデータをパッケージ化する方法を解決するアプリケーション層プロトコルです。 WEB は、アプリケーション層プロトコルとして HTTP プロトコルを使用して HTTP テキスト情報をカプセル化し、トランスポート層プロトコルとして TCP/IP を使用してそれをネットワークに送信します。
次の表は、元の OSI (Open System Interconnect) モデルにおけるさまざまな TCP/IP およびその他のプロトコルの位置を示しています:
PS: この表はオンライン情報から引用しています
CA とは証明書?
CA (認証局) は、証明書の管理と発行を担当する第三者機関であり、あらゆる業界および一般の人々から信頼され、認知されています。
CA証明書はCAが発行する証明書で、Webサイトが信頼できるかどうか(HTTPSの場合)、ファイルが信頼できるかどうか(改ざんされているかどうか)などを検証するために使用できます。 1 つの証明書が別の証明書が本物で信頼できることを証明するため、最上位の証明書はルート証明書と呼ばれます。ルート証明書 (それ自体が信頼できることを証明する) を除いて、他の証明書はそれ自体を証明するために上位レベルの証明書に依存する必要があります。
HTTP スリーウェイ ハンドシェイク
HTTP (HyperText Transfer Protocol) は、インターネット上で最も広く使用されているネットワーク プロトコルです。情報は平文で送信されるため、安全ではないと考えられます。 HTTP の 3 ウェイ ハンドシェイクについては、実際には 3 ウェイ TCP ハンドシェイクを使用して HTTP 接続の確立を確認します。
下の図に示すように、SYN(同期)は、TCP/IPが接続を確立するときに使用されるハンドシェイク信号、シーケンス番号、および確認番号であり、指している3つの矢印は3ウェイハンドシェイクを表し、3ウェイハンドシェイクが完了します。クライアントとサーバーがデータの送信を開始します。
追記: この写真はオンライン情報からのものです
最初のハンドシェイク: クライアントは syn パケット (syn=j) をサーバーに送信し、SYN_SEND 状態に入り、サーバーの確認を待ちます
2 回目のハンドシェイク:サーバーが syn パケットを受信すると、クライアントの SYN (ack=j+1) を確認すると同時に SYN パケット (syn=k)、つまり SYN+ACK パケットを送信する必要があります。 SYN_RECV 状態;
3 番目のハンドシェイク: クライアント クライアントはサーバーから SYN+ACK パケットを受信し、確認パケット ACK (ack=k+1) をサーバーに送信します。パケットの送信後、クライアントとサーバーは開始します。 ESTABLISHED 状態になり、3 ウェイ ハンドシェイクが完了します。
HTTPS ハンドシェイク プロセス
HTTPS は、HTTP に基づいて SSL プロトコルを追加し、SSL はサーバーの ID を検証し、ブラウザとサーバー間の通信を暗号化します。具体的にどのように暗号化、復号、検証を行うかを下図に示します。これをハンドシェイクと呼びます。 PS: 下の写真の説明は http://zhuqil.cnblogs.com から引用しています
1. プロトコルのサーバーには、自分で作成したデジタル証明書または CA 証明書のセットが必要です。 。違いは、自分で発行した証明書はアクセスを続ける前にクライアントによって検証される必要があるのに対し、CA 証明書を使用するとプロンプト ページがポップアップ表示されないことです。この証明書のセットは、実際には公開鍵と秘密鍵のペアです。公開鍵は他人による暗号化に使用され、秘密鍵は自分自身の復号化に使用されます。
3. 証明書を転送するこの証明書は実際には公開鍵ですが、証明書の発行機関や有効期限など、多くの情報が含まれています。
4. クライアントの証明書解析
この部分の作業は、まず、発行局、有効期限など、公開キーが有効であるかどうかを検証します。例外が見つかった場合、ポップアップが表示されます。証明書に問題があることを示す警告ボックスが表示されます。証明書に問題がない場合は、ランダム値が生成され、そのランダム値が証明書で暗号化されます。
5. 暗号化された情報の送信
この部分は、証明書で暗号化されたランダムな値を送信し、将来、このランダムな値をサーバーが取得できるようにすることです。このランダムな値を使用して暗号化と復号化が実行されます。
6. サービスセグメントの復号化情報
サーバーは秘密キーで復号化した後、クライアントから渡されたランダムな値 (秘密キー) を取得し、この値を使用してコンテンツを対称的に暗号化します。いわゆる対称暗号化とは、特定のアルゴリズムを通じて情報と秘密鍵を混合するもので、秘密鍵が分からない限りコンテンツを取得できず、クライアントとサーバーの両方が秘密鍵を知っているため、暗号化アルゴリズムは十分に強力で、秘密キーは十分に複雑で、データは十分に安全です。
7. 暗号化された情報の送信
この情報の部分は、サービスセグメント内の秘密鍵で暗号化された情報であり、クライアントで復元できます。
8. クライアントは情報を復号化します
クライアントは、以前に生成された秘密鍵を使用して、サービスセグメントによって渡された情報を復号化し、復号化されたコンテンツを取得します。
追記: たとえ第三者がハンドシェイクプロセス全体を通してデータを監視したとしても、彼らにできることは何もありません。
概要
なぜHTTPSは安全なのですか?
HTTPS ハンドシェイクの 4 番目のステップでは、サイトの証明書が信頼できない場合、Web サイトの信頼性を確認するために次の確認インターフェイスが表示されます。さらに、ステップ 6 と 8 では、クライアントの秘密キーを使用して暗号化と復号化を行い、データ送信のセキュリティを確保します。
HTTPS と HTTP の違い
1. https プロトコルでは、CA から証明書を申請するか、独自の証明書を作成する必要があります。
2. http 情報はクリアテキストで送信されますが、https では安全な SSL 暗号化が使用されます。
3. http は TCP で直接データを送信しますが、https は SSL 層 (OSI プレゼンテーション層) を通過し、異なるポートを使用します。前者は 80 (国内申請が必要)、後者は 443 です。
4. http 接続は非常にシンプルでステートレスです。HTTPS プロトコルは、暗号化された送信と ID 認証を実行できる SSL+HTTP プロトコルから構築されたネットワーク プロトコルであり、http プロトコルよりも安全です。
httpsの暗号化はトランスポート層で完了することに注意してください
httpsメッセージがtcpメッセージにパッケージ化されるとき、httpsのヘッダーフィールドか本文フィールドが暗号化されます。
tcpdump または Wireshark およびその他の TCP レイヤー ツールを使用してパケットをキャプチャする場合、暗号化されたコンテンツが取得されます。アプリケーション レイヤーを使用してパケットをキャプチャする場合は、Charels (Mac)、Fildder (Windows) を使用します。 パケット キャプチャ ツールを使用すると、もちろんクリア テキストで表示されます。 追記: HTTPS 自体はネットワーク送信のセキュリティを目的としています。
例、wireshark を使用してパケットをキャプチャします: http、キャプチャがプレーンテキストであることがわかります:https、キャプチャが暗号文であることがわかります:
HTTPS で一般的に使用される暗号化アルゴリズムと HASH アルゴリズムは次のとおりです:
非対称暗号化アルゴリズム: RSA、DSA/DSS対称暗号化アルゴリズム: AES、RC4、3DES HASH アルゴリズム: MD5、SHA1、SHA256以上がHTTP 対 HTTPS ハンドシェイクとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTTP ステータス コード 520 は、サーバーがリクエストの処理中に不明なエラーに遭遇し、より具体的な情報を提供できないことを意味します。サーバーがリクエストを処理しているときに不明なエラーが発生したことを示すために使用されます。サーバー構成の問題、ネットワークの問題、またはその他の不明な理由が原因である可能性があります。これは通常、サーバー構成の問題、ネットワークの問題、サーバーの過負荷、またはコーディング エラーが原因で発生します。ステータス コード 520 エラーが発生した場合は、Web サイト管理者またはテクニカル サポート チームに連絡して詳細情報と支援を得ることが最善です。

HTTP ステータス コード 403 は、サーバーがクライアントの要求を拒否したことを意味します。 http ステータス コード 403 の解決策は次のとおりです: 1. 認証資格情報を確認します。サーバーが認証を必要とする場合は、正しい資格情報が提供されていることを確認します。2. IP アドレス制限を確認します。サーバーが IP アドレスを制限している場合は、クライアントの IP アドレスは制限されています。ホワイトリストに登録されているか、ブラックリストに登録されていません。3. ファイルのアクセス許可設定を確認します。403 ステータス コードがファイルまたはディレクトリのアクセス許可設定に関連している場合は、クライアントがこれらのファイルまたはディレクトリにアクセスするための十分なアクセス許可を持っていることを確認してください。等

NginxProxyManager を使用して HTTPS プロトコルでリバース プロキシを実装する方法 近年、インターネットの普及とアプリケーション シナリオの多様化に伴い、Web サイトやアプリケーションへのアクセス方法はますます複雑になっています。 Web サイトへのアクセス効率とセキュリティを向上させるために、多くの Web サイトはユーザーのリクエストを処理するためにリバース プロキシを使用し始めています。 HTTPS プロトコルのリバース プロキシは、ユーザーのプライバシーを保護し、通信のセキュリティを確保する上で重要な役割を果たします。この記事ではNginxProxyの使い方を紹介します。

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

NginxProxyManager を使用して HTTP から HTTPS への自動ジャンプを実装する方法 インターネットの発展に伴い、ますます多くの Web サイトが HTTPS プロトコルを使用してデータ送信を暗号化し、データ セキュリティとユーザーのプライバシー保護を向上させ始めています。 HTTPS プロトコルは SSL 証明書のサポートを必要とするため、HTTPS プロトコルを展開する際には特定の技術サポートが必要です。 Nginx は強力で一般的に使用される HTTP サーバーおよびリバース プロキシ サーバーであり、NginxProxy

クイック アプリケーション: PHP の実践的な開発ケース分析 複数ファイルの非同期 HTTP ダウンロード インターネットの発展に伴い、ファイル ダウンロード機能は多くの Web サイトやアプリケーションの基本的なニーズの 1 つになりました。複数のファイルを同時にダウンロードする必要があるシナリオでは、従来の同期ダウンロード方法は非効率的で時間がかかることがよくあります。このため、PHP を使用して HTTP 経由で複数のファイルを非同期にダウンロードするソリューションがますます一般的になってきています。この記事では、実際の開発事例を通して、PHP 非同期 HTTP の使用方法を詳しく分析します。

C# におけるネットワーク通信とセキュリティの一般的な問題と解決策 今日のインターネット時代では、ネットワーク通信はソフトウェア開発に不可欠な部分となっています。 C# では通常、データ送信のセキュリティ、ネットワーク接続の安定性など、ネットワーク通信の問題が発生します。この記事では、C# における一般的なネットワーク通信とセキュリティの問題について詳しく説明し、対応する解決策とコード例を提供します。 1. ネットワーク通信の問題 ネットワーク接続の中断: ネットワーク通信プロセス中に、ネットワーク接続が中断される場合があります。

HTTP ステータス コード 200: 成功した応答の意味と目的を調べる HTTP ステータス コードは、サーバーの応答のステータスを示すために使用される数値コードです。このうち、ステータス コード 200 は、リクエストがサーバーによって正常に処理されたことを示します。この記事では、HTTP ステータス コード 200 の具体的な意味と使用法について説明します。まず、HTTP ステータス コードの分類を理解しましょう。ステータス コードは、1xx、2xx、3xx、4xx、5xx の 5 つのカテゴリに分類されます。このうち、2xx は成功応答を示します。 200 は 2xx で最も一般的なステータス コードです
