.NET Frameworkin versio 3.5 ja aiemmat versiot eivät tarjoa tukea sovelluksille, jotka käyttävät TLS (Transport Layer Security) -järjestelmän oletusversioita salauksena. Tämä päivitys ottaa käyttöön TLS v1.2:n käytön .NET Framework 3.5:ssä.
HuomautusTämä sisältö on saatavilla Windows päivityksessä. Voit hankkia sisällön hakemalla Windows uusimmat päivitykset .NET Framework päivityksestä. Jos järjestelmäsi on täysin ajan tasalla Windows-päivityksen kautta, sinun ei tarvitse tehdä lisätoimia.
Ratkaisu
Tietojen lataaminen
Kb3154519ia vastaava hotfix-korjaus on korvattu uusilla päivityspäivityksillä, jotka .NET Framework, jotka sisältävät kaikki KB3154519-versioon aiemmin sisältyvät korjaukset. On suositeltavaa asentaa uusimmat .NET Framework.
Tällä alueella on tehty seuraavat parannukset:
-
Seuraavat rekisteriavaimet voidaan määrittää käyttämään SSL: n ja TLS:n käyttöjärjestelmän oletusarvoja koodattujen .NET Framework oletusarvojen asemesta tietokoneessa hallitun sovelluksen oletusarvoja.
-
64-bittiset käyttöjärjestelmät: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001 -
32-bittiset käyttöjärjestelmät: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Huomautus Jos sovellus on määrittänyt ServicePointManager.SecureProtocol-koodin tai määritystiedostojen avulla tietyn arvon tai käyttää SslStream.AuthenticateAs* -ohjelmointirajapintoja tietyn SslProtocols-joukon määrittämiseen, rekisteriasetuksen toimintaa ei tapahdu.
-
-
Lisäksi microsoft on lisännyt SslProtocolsExtensions-luetteloinnin, jota voit käyttää asetuksena TLS v1.2-, TLS v1.1- sekä käyttöjärjestelmän oletusarvoille ServicePointManager.SecurityProtocol-ominaisuudelle kohdentaessa .NET Frameworkin versiota 2.0 SP2. (Lisätietoja laajennusten käytöstä on Kehittäjän ohjeet -osassa.)
Huomautus Windows Vista SP2- ja Windows Server 2008 SP2 -versiot eivät tue TLS (Transport Layer Security) -protokollaversioita, jotka ovat uudempia kuin 1.0. Hallitut .NET Framework 2.0 SP2 -sovellukset, joissa on käytössä Windows Vista SP2 tai Windows Server 2008 SP2, eivät voi käyttää TLS 1.2- tai TLS 1.1-protokollaa, vaikka nämä protokollat on määritetty ServicePointManager.SecurityProtocol-ominaisuudessa.
Saat lisätietoja Microsoft-tukitiedostojen lataamiseen napsauttamalla seuraavaa artikkelin numeroa, jolloin voit tarkastella artikkelia Microsoft Knowledge Base -tietokannassa:
119591 Microsoftin tukitiedostojen hankkiminen verkkopalveluista Microsoft skannasi tämän tiedoston virusten varalta. Microsoft on käyttänyt uusinta virustorjuntaohjelmistoa, joka on ollut saatavilla silloin, kun kyseinen tiedosto on asetettu ladattavaksi. Tiedosto on tallennettuna suojattuihin palvelimiin, jotka estävät luvattomat muutokset tiedostoon.
Kehittäjien ohjeet
Uusien laajennusten määritelmä on seuraavissa tiedostoissa:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{
using System.Security.Authentication;
public static class SecurityProtocolTypeExtensions
{
public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12;
public const SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11;
public const SecurityProtocolType SystemDefault = (SecurityProtocolType)0;
}
} -
SslProtocolsExtensions.csnamespace System.Security.Authentication
{
public static class SslProtocolsExtensions
{
public const SslProtocols Tls12 = (SslProtocols)0x00000C00;
public const SslProtocols Tls11 = (SslProtocols)0x00000300;
}
}
Jos haluat sisällyttää TLS v1.2:n tuen, sisällytä lähdetiedostot projektiisi ja määritä sitten protokollaversio seuraavilla tavoilla:
-
Sovellukset, jotka käyttävät ServicePointManager-pohjaisia ohjelmointirajapinnat, voivat määrittää protokollan seuraavasti:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Sovellukset, jotka käyttävät SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) -ylikuormitusta, voivat määrittää SslProtocols-arvoksi SslProtocolsExtensions.Tls12.
Jos ensimmäisessä kappaleessa mainittu rekisteriasetus on määritetty ja SslProtocols-arvoksi on määritetty sovelluksessa SslProtocols.None, valittu järjestelmän oletustoiminta riippuu Windows versiosta.
Kun muutat sovelluskoodia TLS v1.2 :n tuen käyttöönottoa varten .NET Framework 3.5 SP1 :ssä, muista korjata seuraavat poikkeukset tietokoneissa, joissa tätä korjausta ei ole otettu käyttöön:
-
Jos hotfix-korjausta ei ole asennettu, ServicePointManager-pohjaiset ohjelmointirajapinnat (HTTP, FTP, SMTP) saavat ilmoituksen "System.NotSupportedException: Pyydettyä suojausprotokollaa ei tueta", kun sovellus kutsuu kohdetta ServicePointManager.SecurityProtocol uuden arvon määritystä varten.
-
Jos hotfix-korjausta ei ole asennettu, SslStream-pohjaiset ohjelmointirajapinnat heittävät poikkeuksia, kun ne kutsuvat jompaakumpaa AuthenticateAs*-ohjelmointirajapinnasta:
System.ArgumentException: Määritetty arvo ei kelpaa SslProtocolType-luetteloinnissa.
Parametrin nimi: sslProtocolType
Huomautus Vain SslStream:ssä Tls12:n, Tls11:n ja minkä tahansa olemassa olevan Tls-, Ssl3- ja Ssl2-protokollan yhdistelmä (esimerkiksi Tls12-| Tls11-| Tls) palaa järjestelmälle ilman korjausta myös olemassa oleviin protokolliin (esimerkiksi Tls). Se muodostaa yhteyden Tls-tiedostoihin heittämättä poikkeusta.
Lisätietoja
Jos haluat ottaa TLS v1.1: n tai v1.2:n käyttöön käyttöjärjestelmän oletusasetuksina, noudata ohjeita kohdassa https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12.
Huomautus TLS v1.1 ja v1.2 eivät ole käytettävissä Windows Vistassa tai Windows Server 2008:ssa.
Jos sinun on poistettava käytöstä käyttöjärjestelmän oletusasetukset, jotka on määritetty tiettyjen sovellusten Ratkaisu-osassa mainitulla rekisteriavaimella, voit tehdä tämän lisäämällä seuraavan rekisteriavaimen:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions
<<Tiedoston .exe:n koko polku>> DWORD 0
C:\MyApp\MyApp.exe DWORD 0
Lisätietoja TLS v1.2:sta on kohdassa TLS v1.2:n esittely.
Kun olet sallinut SystemDefaultTlsVersions .NET-rekisteriavaimen, jokaista Windows tapahtuu eri tavalla seuraavassa taulukossa esitetyllä tavalla.
Windows-versio |
SSL2-asiakasohjelma |
SSL2 Server |
SSL3-asiakasohjelma |
SSL3 Server |
TLS 1.0 -asiakasohjelma |
TLS 1.0 Server |
TLS 1.1 -asiakasohjelma |
TLS 1.1 Server |
TLS 1.2 -asiakasohjelma |
TLS 1.2 Server |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 ja Windows Server 2008 SP2 |
Ei käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
– |
– |
– |
– |
Windows 7 SP1 ja Windows Server 2008 R2 SP1 |
Ei käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Ei käytössä |
Ei käytössä |
Ei käytössä |
Ei käytössä |
Windows Server 2012 |
Ei käytössä |
Ei käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Windows 8.1 ja Windows Server 2012 R2 |
Ei käytössä |
Ei käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Windows 10 |
Ei käytössä |
Ei käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Windows 10 (1511) |
Ei käytössä |
Ei käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Windows 10 (1607) ja Windows Server 2016 |
– |
– |
Ei käytössä |
Ei käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |
Käytössä |