Preciso usar o TLS 1.2 para me conectar do meu serviço da web .NET a outro que forçará o TLS 1.2. Eu encontrei um recurso que dizia que o .NET 4.6 usa TLS 1.2 por padrão, então parecia a solução mais fácil. Atualizei o .NET framework no servidor e reiniciei. No IIS tentei fazer um pool de aplicativos usando .NET 4.6, mas 4.0 era a única opção. Então eu encontrei algo que dizia que ainda diria 4.0 porque 4.6 é uma atualização "no local" para .NET 4.0. Então pensei que talvez tivesse acabado. No entanto, em uma página de erro que recebi por motivos não relacionados, Microsoft .NET Framework Version:4.0.30319
parece que não atualizei com êxito. Alguma sugestão sobre como ter certeza de que meu pool de aplicativos está usando .NET 4.6 ou, de forma mais geral, como habilitar o TLS 1.2?
100
Respostas:
Na verdade, acabamos de atualizar um serviço da web .NET para 4.6 para permitir o TLS 1.2.
O que Artem está dizendo foram os primeiros passos que demos. Nós recompilamos a estrutura do serviço web para 4.6 e tentamos mudar a chave de registro para habilitar o TLS 1.2, embora isso não funcionasse: a conexão ainda estava em TLS 1.0. Além disso, não queríamos proibir o SLL 3.0, TLS 1.0 ou TLS 1.1 na máquina: outros serviços da web poderiam estar usando isso; revertemos nossas alterações no registro.
Na verdade, alteramos os arquivos Web.Config para informar ao IIS: "ei, execute-me no 4.6, por favor".
Aqui estão as alterações que adicionamos no web.config + recompilação no .NET 4.6:
<system.web> <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 --> <!--Added this httpRuntime --> <httpRuntime targetFramework="4.6" /> <authentication mode="Windows"/> <pages controlRenderingCompatibilityVersion="4.0"/> </system.web>
E a conexão mudou para TLS 1.2, porque o IIS agora está executando o serviço da web em 4.6 (explicado explicitamente) e 4.6 está usando TLS 1.2 por padrão.
fonte
Adicione o seguinte código antes de instanciar seu cliente de serviço da web:
Ou para compatibilidade com versões anteriores com TLS 1.1 e anterior:
fonte
se você estiver usando .Net anterior a 4.5, não terá Tls12 no enum, então o estado é explicitamente mencionado aqui
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
fonte
Três etapas necessárias:
Marque explicitamente SSL2.0, TLS1.0, TLS1.1 como proibido na máquina do servidor, adicionando
Enabled=0
eDisabledByDefault=1
ao seu registro (o caminho completo éHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
). Veja a tela para detalhesAtive explicitamente
TLS1.2
seguindo as etapas de 1. Basta usarEnabled=1
eDisabledByDefault=0
respectivamente.NOTA: verifique a versão do servidor:
Windows Server 2003
não suporta oTLS 1.2
protocoloHabilite
TLS1.2
apenas no nível do aplicativo, como @John Wu sugerido acima.System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Espero que este guia ajude.
ATUALIZAÇÃO Como @Subbu mencionou: Guia oficial
fonte
Para mim abaixo funcionou:
Etapa 1: baixou e instalou o exe do instalador da web de https://www.microsoft.com/en-us/download/details.aspx?id=48137 no servidor de aplicativos. Reinicializou o servidor de aplicativos após a conclusão da instalação.
Etapa 2: adicionadas as alterações abaixo no web.config
<system.web> <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 --> <!--Added this httpRuntime --> <httpRuntime targetFramework="4.6" /> </system.web>
Etapa 3: após concluir as etapas 1 e 2, ocorreu um erro, " WebForms UnobtrusiveValidationMode requer um ScriptResourceMapping para 'jquery'. Adicione um ScriptResourceMapping denominado jquery (diferencia maiúsculas de minúsculas) " e para resolver esse erro, adicionei a chave abaixo em appsettings no meu arquivo web.config
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
fonte
O PowerBI Embedded requer TLS 1.2.
A resposta acima de Etienne Faucher é a sua solução. link rápido para a resposta acima ... link rápido para a resposta acima ... ( https://stackoverflow.com/a/45442874 )
O PowerBI requer TLS 1.2 de junho de 2020 - Esta é a sua resposta - Considere forçar o tempo de execução do IIS a chegar a 4,6 para forçar o comportamento padrão do TLS 1.2 que você está procurando na estrutura. A resposta acima fornece uma solução apenas para alteração de configuração.
Sintomas : Conexão TCP / IP forçada e rejeitada com o Microsoft PowerBI Embedded que aparece de repente em seus sistemas.
Essas chamadas do PowerBI simplesmente param de funcionar com um erro Hard TCP / IP Close, como se um firewall bloquearia uma conexão. Normalmente as etapas de autenticação funcionam - é quando você acessa o serviço para um espaço de trabalho específico e ids de relatório que ele falha.
Esta é a nota de 2020 do Microsoft PowerBI sobre o TLS 1.2 necessário
PowerBIClient
métodos que mostram este problema
GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api HttpClientHandler Force TLS 1.1 TLS 1.2
Pesquise os termos de erro para ajudar as pessoas a encontrar isso: System.Net.Http.HttpRequestException: Ocorreu um erro ao enviar a solicitação System.Net.WebException: A conexão subjacente foi fechada: Ocorreu um erro inesperado em um envio. System.IO.IOException: Incapaz de ler dados da conexão de transporte: Uma conexão existente foi fechada à força pelo host remoto.
fonte