«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу определить согласованную версию TLS в .NET?

Как я могу определить согласованную версию TLS в .NET?

Опубликовано в 2025-03-22
Просматривать:382

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

определение согласованной версии TLS в приложениях .NET

]

. Net 4.7 по умолчанию TLS 1.2 для HTTP -запросов; Тем не менее, фактическая версия TLS, используемая во время установления соединения, может варьироваться. В этом руководстве изложены два метода определения согласованной версии TLS.

]

Метод 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: Атрибуты контекста Secure Connect Этот метод обращается к атрибутам контекста подключения через библиотеку

secur32.dll

. Этот подход включает в себя работу с непубличными ручками и структурами, что делает его менее портативным и потенциально более сложным. (Подробная реализация опущена из -за сложности и потенциальной нестабильности.) ]

важные соображения:

]

    . Net версии:
  • tls 1.3 Поддержка требует .NET Framework 4.8 или более поздней, или .NET CORE 3.0. ]
  • remoteCertificateValidationCallback : Этот обратный вызов предлагает понимание используемых протоколов безопасности, помогая в идентификации версии TLS.
  • tcpclient : с использованием tcpclient позволяет получить информацию TLS до webRequest инициализация, обеспечивающая проницательная версия TLS. ] эта информация помогает разработчикам понять и управлять протоколами безопасности, используемыми их приложениями .NET. Не забудьте тщательно рассмотреть последствия и потенциальные риски, связанные с использованием отражения и взаимодействия с неуправляемыми библиотеками.
  • ]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3