Muszę użyć protokołu TLS 1.2, aby połączyć się z mojej usługi internetowej .NET do innej, która wymusi protokół TLS 1.2. Znalazłem zasób, który powiedział, że .NET 4.6 używa domyślnie TLS 1.2, więc brzmi to jak najłatwiejsze rozwiązanie. Zaktualizowałem platformę .NET na serwerze i uruchomiłem ponownie. W IIS próbowałem utworzyć pulę aplikacji przy użyciu .NET 4.6, ale 4.0 było jedyną opcją. Potem znalazłem coś, co mówiło, że nadal będzie to 4.0, ponieważ 4.6 jest aktualizacją „na miejscu” do .NET 4.0. Więc pomyślałem, że może skończyłem. Jednak na stronie błędu, którą otrzymałem z niepowiązanych powodów, było napisane Microsoft .NET Framework Version:4.0.30319
, że wygląda na to, że nie udało mi się zaktualizować. Jakieś wskazówki, jak upewnić się, że moja pula aplikacji używa .NET 4.6 lub bardziej ogólnie, jak włączyć protokół TLS 1.2?
101
Odpowiedzi:
Właśnie zaktualizowaliśmy usługę internetową .NET do wersji 4.6, aby umożliwić TLS 1.2.
To, co mówi Artem, było pierwszymi krokami, które zrobiliśmy. Ponownie skompilowaliśmy strukturę usługi internetowej do wersji 4.6 i próbowaliśmy zmienić klucz rejestru, aby włączyć protokół TLS 1.2, chociaż to nie zadziałało: połączenie było nadal w protokole TLS 1.0. Nie chcieliśmy też blokować SLL 3.0, TLS 1.0 lub TLS 1.1 na komputerze: inne usługi sieciowe mogą tego używać; wycofaliśmy nasze zmiany w rejestrze.
Właściwie zmieniliśmy pliki Web.Config, aby powiedzieć IIS: „hej, uruchom mnie w 4.6, proszę”.
Oto zmiany, które dodaliśmy w pliku web.config + rekompilacja w .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>
Połączenie zostało zmienione na TLS 1.2, ponieważ IIS uruchamia teraz usługę internetową w wersji 4.6 (o czym wyraźnie powiedziano), a 4.6 domyślnie używa protokołu TLS 1.2.
źródło
Dodaj następujący kod przed utworzeniem wystąpienia klienta usługi sieci Web:
Lub dla wstecznej kompatybilności z TLS 1.1 i wcześniejszymi:
źródło
jeśli używasz .Net starszego niż 4.5, nie będziesz mieć Tls12 w wyliczeniu, więc stan jest tutaj wyraźnie wymieniony
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
źródło
Potrzebne są trzy kroki:
Wyraźnie oznacz SSL2.0, TLS1.0, TLS1.1 jako zabronione na serwerze, dodając
Enabled=0
iDisabledByDefault=1
do rejestru (pełna ścieżka toHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
). Szczegóły na ekranieWłącz jawnie
TLS1.2
, wykonując kroki z 1. Po prostu użyj odpowiednioEnabled=1
iDisabledByDefault=0
.UWAGA: sprawdź wersję serwera:
Windows Server 2003
nie obsługujeTLS 1.2
protokołuWłączyć
TLS1.2
tylko na poziomie aplikacji, jak sugerowany powyżej @John Wu.System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Mam nadzieję, że ten przewodnik pomoże.
AKTUALIZACJA Jak wspomniał @Subbu: Oficjalny przewodnik
źródło
U mnie poniżej działało:
Krok 1: Pobrano i zainstalowano Web Installer exe z https://www.microsoft.com/en-us/download/details.aspx?id=48137 na serwerze aplikacji. Uruchomiono ponownie serwer aplikacji po zakończeniu instalacji.
Krok 2: Dodano poniższe zmiany w pliku web.config
<system.web> <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 --> <!--Added this httpRuntime --> <httpRuntime targetFramework="4.6" /> </system.web>
Krok 3: Po wykonaniu kroków 1 i 2 wystąpił błąd „ WebForms UnobtrusiveValidationMode wymaga ScriptResourceMapping dla„ jquery ”. Dodaj ScriptResourceMapping o nazwie jquery (rozróżniana wielkość liter) ” i aby rozwiązać ten błąd, dodałem poniżej klucz w appsettings w moim pliku web.config
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
źródło
PowerBI Embedded wymaga protokołu TLS 1.2.
Odpowiedź powyżej autorstwa Etienne Faucher jest rozwiązaniem. szybki link do powyższej odpowiedzi ... szybki link do powyższej odpowiedzi ... ( https://stackoverflow.com/a/45442874 )
PowerBI wymaga protokołu TLS 1.2 czerwca 2020 r. - To jest Twoja odpowiedź - rozważ wymuszenie w środowisku wykonawczym usług IIS maksymalnie 4,6, aby wymusić domyślne zachowanie TLS 1,2, którego szukasz we frameworku. Powyższa odpowiedź daje rozwiązanie tylko do zmiany konfiguracji.
Objawy : Wymuszone Zamknięte Odrzucone połączenie TCP / IP z Microsoft PowerBI Embedded, które nagle pojawia się w Twoich systemach.
Te wywołania PowerBI po prostu przestają działać z błędem Hard TCP / IP Close, tak jakby zapora sieciowa blokowała połączenie. Zwykle kroki autoryzacji działają - kończy się to, gdy trafiasz do usługi dla określonego obszaru roboczego i identyfikatory raportu.
To jest notatka firmy Microsoft PowerBI 2020 dotycząca wymaganego protokołu TLS 1.2
PowerBIClient
metody, które pokazują ten problem
GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api HttpClientHandler Force TLS 1.1 TLS 1.2
Wyszukiwane terminy błędów ułatwiające znalezienie tego: System.Net.Http.HttpRequestException: Wystąpił błąd podczas wysyłania żądania System.Net.WebException: Połączenie podstawowe zostało zamknięte: Wystąpił nieoczekiwany błąd podczas wysyłania. System.IO.IOException: nie można odczytać danych z połączenia transportowego: istniejące połączenie zostało wymuszone przez zdalnego hosta.
źródło