.NET HTTP リクエスト内のネゴシエートされた TLS バージョンを明らかにする
.NET アプリケーションは、Web リクエストに対してデフォルトで TLS 1.2 を使用します。 ただし、以下で説明する方法を使用して、許可されるプロトコルを直接制御し、ネゴシエートされた最終的な TLS バージョンを決定することができます。
方法 1: SslStream を使用した .NET リフレクションの活用
TlsStream
または HttpWebRequest.GetRequestStream()
から取得したストリームの HttpWebRequest.GetResponseStream()
プロパティを検査します。 リフレクションを使用して SslState
オブジェクトにアクセスし、SslProtocol
プロパティを抽出して、ネゴシエートされた TLS バージョンを明らかにします。
方法 2: .NET セキュリティ コンテキスト属性の利用
QueryContextAttributesW
API (secur32.dll
にあります) を使用すると、接続セキュリティ コンテキストの詳細を取得できます。 具体的には、dwProtocol
構造内の SecPkgContext_ConnectionInfo
メンバーを調べて、使用されている SslProtocol を特定します。
方法 3: TcpClient を使用する代替方法 (サーバー側検証のみ)
このアプローチでは、TcpClient()
を使用して安全な接続を作成し、ServicePointManager
と同じ設定を使用してサーバー証明書を検証します。 注: これは、Web リクエストを開始する前に TLS 情報が必要な場合には適していません。
これらの手法には、リフレクションまたは下位レベルの API が含まれます。 常に例外を予期し、潜在的なリフレクション許可の問題に対処してください。
以上が.NET HTTP リクエストで使用されるネゴシエートされた TLS バージョンを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。