Aggiornare il servizio Web .NET per utilizzare TLS 1.2
Devo utilizzare TLS 1.2 per connettermi dal mio servizio web .NET a un altro che imporrà TLS 1.2. Ho trovato una risorsa che diceva che .NET 4.6 utilizza TLS 1.2 per impostazione predefinita, quindi sembrava la soluzione più semplice. Ho aggiornato il framework .NET sul server e ho riavviato. In IIS ho provato a creare un pool di applicazioni utilizzando .NET 4.6 ma 4.0 era l'unica opzione. Poi ho trovato qualcosa che diceva che sarebbe ancora 4.0 perché 4.6 è un aggiornamento "sul posto" a .NET 4.0. Quindi ho pensato che forse avevo finito. Tuttavia, su una pagina di errore che ho ricevuto per motivi non correlati, è stato detto che Microsoft .NET Framework Version:4.0.30319così sembra che non ho aggiornato con successo. Qualche suggerimento su come assicurarsi che il mio pool di applicazioni utilizzi .NET 4.6 o, più in generale, come abilitare TLS 1.2?
Risposte
In realtà abbiamo appena aggiornato un servizio web .NET a 4.6 per consentire TLS 1.2.
Quello che dice Artem sono stati i primi passi che abbiamo fatto. Abbiamo ricompilato il framework del servizio web in 4.6 e abbiamo provato a cambiare la chiave di registro per abilitare TLS 1.2, anche se questo non ha funzionato: la connessione era ancora in TLS 1.0. Inoltre, non volevamo disabilitare SLL 3.0, TLS 1.0 o TLS 1.1 sulla macchina: altri servizi web potrebbero usarlo; abbiamo ripristinato le nostre modifiche nel registro.
In realtà abbiamo modificato i file Web.Config per dire a IIS: "hey, eseguimi in 4.6 per favore".
Ecco le modifiche che abbiamo aggiunto nella ricompilazione web.config + in .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 la connessione è cambiata in TLS 1.2, perché IIS ora esegue il servizio web in 4.6 (detto esplicitamente) e 4.6 utilizza TLS 1.2 per impostazione predefinita.
Aggiungi il codice seguente prima di creare un'istanza del client del servizio Web:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
O per compatibilità con le versioni precedenti con TLS 1.1 e versioni precedenti:
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
se stai usando .Net prima della 4.5 non avrai Tls12 nell'enum, quindi lo stato è esplicitamente menzionato qui
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
Tre passaggi necessari:
Contrassegna esplicitamente SSL2.0, TLS1.0, TLS1.1 come vietato sul tuo computer server, aggiungendo
Enabled=0eDisabledByDefault=1al tuo registro (il percorso completo èHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols). Vedere la schermata per i dettagli
Abilitalo esplicitamente
TLS1.2seguendo i passaggi da 1. UsaEnabled=1eDisabledByDefault=0rispettivamente.
NOTA: verifica la versione del server: Windows Server 2003non supporta il TLS 1.2protocollo
Abilita
TLS1.2solo a livello di app, come suggerito sopra da @John Wu.System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Spero che questa guida ti aiuti.
AGGIORNAMENTO Come menzionato da @Subbu: Guida ufficiale
Per me di seguito ha funzionato:
Passaggio 1: scaricato e installato l'exe del programma di installazione web da https://www.microsoft.com/en-us/download/details.aspx?id=48137 sul server delle applicazioni. Riavviato il server delle applicazioni al termine dell'installazione.
Passaggio 2: aggiunte di seguito le modifiche nel file web.config
<system.web>
<compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
<!--Added this httpRuntime -->
<httpRuntime targetFramework="4.6" />
</system.web>
Passaggio 3: dopo aver completato i passaggi 1 e 2, è stato visualizzato un errore " WebForms UnobtrusiveValidationMode richiede una ScriptResourceMapping per" jquery ". Aggiungi una ScriptResourceMapping denominata jquery (case-sensitive) " e per risolvere questo errore, ho aggiunto sotto la chiave in appsettings nel mio file web.config
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
PowerBI Embedded richiede TLS 1.2.
La risposta di Etienne Faucher sopra è la tua soluzione. collegamento rapido alla risposta precedente ... collegamento rapido alla risposta precedente ... ( https://stackoverflow.com/a/45442874 )
PowerBI richiede TLS 1.2 giugno 2020 - Questa è la tua risposta - Considera l' idea di forzare il runtime IIS fino a 4.6 per forzare il comportamento TLS 1.2 predefinito che stai cercando dal framework. La risposta sopra ti dà una soluzione per la modifica della configurazione.
Sintomi : connessione TCP / IP chiusa forzata rifiutata a Microsoft PowerBI Embedded che si presenta all'improvviso nei tuoi sistemi.
Queste chiamate PowerBI smettono di funzionare con un errore di chiusura di TCP / IP duro come un firewall bloccherebbe una connessione. Di solito i passaggi di autenticazione funzionano: è quando si seleziona il servizio per un'area di lavoro specifica e gli ID di report non riesce.
Questa è la nota 2020 di Microsoft PowerBI su TLS 1.2 richiesto
PowerBIClient
metodi che mostrano questo problema
GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api HttpClientHandler Force TLS 1.1 TLS 1.2
Cerca termini di errore per aiutare le persone a trovare questo: System.Net.Http.HttpRequestException: si è verificato un errore durante l'invio della richiesta System.Net.WebException: la connessione sottostante è stata chiusa: si è verificato un errore imprevisto durante un invio. System.IO.IOException: impossibile leggere i dati dalla connessione di trasporto: una connessione esistente è stata chiusa forzatamente dall'host remoto.