Update .NET-webservice om TLS 1.2 te gebruiken

Ik moet TLS 1.2 gebruiken om verbinding te maken van mijn .NET-webservice naar een andere die TLS 1.2 gaat forceren. Ik vond een bron die zei dat .NET 4.6 standaard TLS 1.2 gebruikt, dus dat klonk als de gemakkelijkste oplossing. Ik heb het .NET-framework op de server bijgewerkt en opnieuw opgestart. In IIS heb ik geprobeerd een applicatiepool te maken met .NET 4.6, maar 4.0 was de enige optie. Toen vond ik iets dat zei dat het nog steeds 4.0 zou zijn, omdat 4.6 een “in place”-update is voor .NET 4.0. Dus ik dacht dat ik misschien klaar was. Op een foutpagina die ik kreeg om niet-gerelateerde redenen, stond echter Microsoft .NET Framework Version:4.0.30319, dus het lijkt erop dat ik de upgrade niet succesvol heb uitgevoerd. Eventuele aanwijzingen over hoe ik ervoor kan zorgen dat mijn groep van toepassingen .NET 4.6 gebruikt, of meer in het algemeen hoe TLS 1.2 in te schakelen?


Antwoord 1, autoriteit 100%

We hebben zojuist een .NET-webservice geüpgraded naar 4.6 om TLS 1.2 toe te staan.

Wat Artem zegt, waren de eerste stappen die we hebben gezet. We hebben het framework van de webservice opnieuw gecompileerd naar 4.6 en we hebben geprobeerd de registersleutel te wijzigen om TLS 1.2 in te schakelen, hoewel dit niet werkte: de verbinding was nog steeds in TLS 1.0. Ook wilden we SLL 3.0, TLS 1.0 of TLS 1.1 op de machine niet verbieden: andere webservices zouden dit kunnen gebruiken; we hebben onze wijzigingen in het register teruggedraaid.

We hebben de Web.Config-bestanden gewijzigd om IIS te vertellen: “hey, run me in 4.6 please”.

Dit zijn de wijzigingen die we hebben toegevoegd in de web.config + hercompilatie 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>

En de verbinding is gewijzigd in TLS 1.2, omdat IIS nu de webservice draait in 4.6 (expliciet verteld) en 4.6 standaard TLS 1.2 gebruikt.


Antwoord 2, autoriteit 74%

Voeg de volgende code toe voordat u uw webserviceclient instantiëert:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Of voor achterwaartse compatibiliteit met TLS 1.1 en eerder:

System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12; 

Antwoord 3, autoriteit 19%

als je .Net eerder dan 4.5 gebruikt, heb je Tls12 niet in de opsomming, dus de staat wordt expliciet vermeld hier

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

Antwoord 4, autoriteit 12%

Drie stappen nodig:

  1. Markeer SSL2.0, TLS1.0, TLS1.1 expliciet als verboden op uw servermachine door Enabled=0en DisabledByDefault=1toe te voegen aan uw register (het volledige pad is HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols). Zie scherm voor details
    register

  2. Schakel TLS1.2expliciet in door de stappen vanaf 1 te volgen. Gebruik respectievelijk Enabled=1en DisabledByDefault=0.

OPMERKING: verifieer serverversie: Windows Server 2003ondersteunt het TLS 1.2-protocol niet

  1. Schakel TLS1.2alleen in op app-niveau, zoals @John Wu hierboven suggereerde.

    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Ik hoop dat deze handleiding helpt.

UPDATE
Zoals @Subbu al zei: Officiële gids


Antwoord 5, autoriteit 5%

Voor mij werkte onderstaand:

Stap 1:de webinstallatie-exe van https://www.microsoft.com/en-us/download/details.aspx?id=48137op de applicatieserver. De applicatieserver opnieuw opgestart nadat de installatie was voltooid.

Stap 2:onderstaande wijzigingen toegevoegd in de web.config

<system.web>
    <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
    <!--Added this httpRuntime -->
    <httpRuntime targetFramework="4.6" />
</system.web>

Stap 3:Na het voltooien van stap 1 en 2, gaf het een foutmelding: “WebForms UnobtrusiveValidationMode vereist een ScriptResourceMapping voor ‘jQuery’. Voeg een ScriptResourceMapping toe met de naam jquery(case -gevoelig)” en om deze fout op te lossen, heb ik de onderstaande sleutel toegevoegd in appsettingsin mijn web.config-bestand

<appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

Antwoord 6

PowerBI Embedded vereist TLS 1.2.

Het antwoord hierboven van Etienne Faucheris jouw oplossing.
snelle link naar bovenstaand antwoord… snelle link naar bovenstaand antwoord…
( https://stackoverflow.com/a/45442874)

PowerBI vereist TLS 1.2 juni 2020 – Dit is uw antwoord– Overweeg om uw IIS-runtime te forceren tot 4.6 om de standaard TLS 1.2-gedrag dat u zoekt in het framework. Het bovenstaande antwoord geeft je een oplossing voor alleen configuratiewijzigingen.

Symptomen: Geforceerd Gesloten Geweigerd TCP/IP-verbinding met Microsoft PowerBI Embedded die plotseling opduikt op al uw systemen.

Deze PowerBI-oproepen werken gewoon niet meer met een Hard TCP/IP Close-fout, zoals een firewall een verbinding zou blokkeren. Gewoonlijk werken de auth-stappen – het is wanneer u de service voor een specifieke werkruimte indrukt en ID’s rapporteert dat het mislukt.

Dit is de 2020-notitie van Microsoft PowerBI over TLS 1.2 vereist

PowerBIClient

methoden die dit probleem aantonen

GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api
HttpClientHandler Force TLS 1.1 TLS 1.2

Zoekfouttermen om mensen te helpen dit te vinden:
System.Net.Http.HttpRequestException: er is een fout opgetreden tijdens het verzenden van de aanvraag
System.Net.WebException: De onderliggende verbinding is gesloten: er is een onverwachte fout opgetreden bij het verzenden.
System.IO.IOException: kan geen gegevens lezen van de transportverbinding: een bestaande verbinding is geforceerd gesloten door de externe host.


Antwoord 7

Als u de server bijwerkt met .Net 4.6 of hoger, wordt TLS 1.2 gebruikt.

Ontdek dit door het oplossen van een aantal mislukte e-mailproblemen met een van onze console-applicaties.

De server had alleen .Net 4.5 geïnstalleerd en e-mails werkten niet.

Op mijn lokale werkstation had ik .Net 4.6, en bij het uitvoeren van de console-app faalden de e-mails niet.

Dus we hebben de console-app verplaatst naar een server met .Net 4.6, verder niets veranderd en de e-mails werkten weer.

Other episodes