"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso determinar a versão TLS negociada no .NET?

Como posso determinar a versão TLS negociada no .NET?

Postado em 2025-03-22
Navegar:677

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

Determinando a versão TLS negociada em aplicativos .net

. Net 4.7 Padrões para TLS 1.2 para solicitações HTTP; No entanto, a versão TLS real usada durante o estabelecimento de conexão pode variar. Este guia descreve dois métodos para determinar a versão TLS negociada.

Método 1: Reflection

Esta técnica aproveita a reflexão para acessar propriedades e campos internos para obter a versão do protocolo SSL. Observe que isso se baseia em APIs internas e pode mudar com as atualizações do .NET futuras.

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) ...

Método 2: Seguro dos atributos de contexto de conexão (Advanced)

Este método acessa atributos de contexto de conexão através do Secur32.dll biblioteca. Essa abordagem envolve trabalhar com alças e estruturas não públicas, tornando-a menos portátil e potencialmente mais complexa. (Implementação detalhada omitida devido à complexidade e instabilidade potencial.)

considerações importantes:

  • . Versão net: tls 1.3 suporte requer.
  • remoteCertificateValidationCallback : Este retorno de chamada oferece informações sobre os protocolos de segurança empregados, ajudando na versão TLS Identification.
  • tcpclient : usando tcpclient permite a recuperação de TLS Information antes webrequest inicialização, ativando a versão tls
Esta informação ajuda os desenvolvedores a entender e gerenciar os protocolos de segurança usados ​​por seus aplicativos .NET. Lembre -se de considerar cuidadosamente as implicações e os riscos potenciais associados ao uso de reflexão e interação com bibliotecas não gerenciadas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3