「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > .NETでネゴシエートされたTLSバージョンを決定するにはどうすればよいですか?

.NETでネゴシエートされたTLSバージョンを決定するにはどうすればよいですか?

2025-03-22に投稿されました
ブラウズ:407

How Can I Determine the Negotiated TLS Version in .NET?

.NETアプリケーションで交渉されたTLSバージョンの決定

。net 4.7は、httpリクエストのTLS 1.2にデフォルトです。ただし、接続確立中に使用される実際のTLSバージョンはさまざまです。 このガイドは、ネゴシエートされたTLSバージョンを決定するための2つの方法の概要を説明します。

方法1:Reflection

この手法は、内部プロパティとフィールドにアクセスするための反射を活用して、SSLプロトコルバージョンを取得します。 これは内部APIに依存しており、将来の.NETアップデートで変更される可能性があることに注意してください。

using System.IO.Compression;
using System.Net;
using System.Net.Security;
using System.Reflection;
using System.Security.Authentication;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

// ... other code ...

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | 
                                       SecurityProtocolType.Tls11 | 
                                       SecurityProtocolType.Tls12 | 
                                       SecurityProtocolType.Tls13;

// ... other code ...

Uri requestUri = new Uri("https://somesite.com");
var request = WebRequest.CreateHttp(requestUri);

// ... other code ...

using (var requestStream = request.GetRequestStream()) {
    // Request stream validated; now extract SSL protocol
    SslProtocols sslProtocol = ExtractSslProtocol(requestStream);
    if (sslProtocol != SslProtocols.None) {
        // Process the sslProtocol value
    }
}

// ... ExtractSslProtocol function (implementation would be provided here) ...

方法2:セキュア接続コンテキスト属性(Advanced)

このメソッドは、 secur32.dll ライブラリを介して接続コンテキスト属性にアクセスします。 このアプローチには、非公開のハンドルと構造を使用することが含まれ、携帯性が低くなり、潜在的に複雑になります。 (複雑さと潜在的な不安定性のために詳細な実装が省略されています。)

重要な考慮事項:

  • 。ネットバージョン: TLS 1.3サポートは.NETフレームワーク4.8以降、または.NET Core 3.0。
  • を必要とします。
  • remotecertificatevalidationCallback このコールバックは、採用されているセキュリティプロトコルに関する洞察を提供し、TLSバージョンの識別を支援します。
  • tcpclient を使用して tcpclient を使用すると、 WebRequest の前にtls情報を取得できます。
この情報は、開発者が.NETアプリケーションで使用されるセキュリティプロトコルを理解および管理するのに役立ちます。 反射を使用し、管理されていないライブラリとの対話に関連する意味と潜在的なリスクを慎重に検討することを忘れないでください。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3