Microsoft Dynamics 365 Customer Engagement (online), aby wymagać protokołu TLS 1.2 na potrzeby łączności

W Dynamics 365 (online) wersji 9.x i Dynamics 365 (online) government w wersji 8.2 zaczniemy wymagać połączeń z aplikacjami do obsługi klienta w celu wykorzystania zabezpieczeń TLS 1.2 (lub lepszej). Jest to zgodne ze zaktualizowanymi zasadami zabezpieczeń firmy Microsoft i branżowymi oraz najlepszymi rozwiązaniami, a użytkownik może być zobowiązany do podjęcia działań w celu utrzymania łączności z aplikacjami Dynamics 365 Customer Engagement. Przejrzyj poniższe informacje, aby dowiedzieć się, czy masz wpływ i jakie kroki może być konieczne.

Dotyczy: Microsoft Dynamics 365
Oryginalny numer KB: 4051700

Co to jest protokół TLS?

TLS oznacza Transport Layer Security i jest protokołem, który jest standardem branżowym mającym na celu ochronę prywatności informacji przekazywanych przez Internet. Protokół TLS jest używany w wielu przeglądarkach internetowych i aplikacjach, które komunikują się za pośrednictwem protokołu HTTPS i TCP.

Co się zmienia?

Obecnie wszystkie wersje Dynamics 365 Customer Engagement online obsługują protokoły TLS 1.0, 1.1 i 1.2, ale począwszy od wersji Dynamics 365 (online) w wersji 9.x i Dynamics 365 (online) government w wersji 8.2, rozpoczniemy blokowanie połączeń ze zaktualizowanym produktem od klientów lub przeglądarek korzystających z protokołu TLS 1.0 i 1.1.

Uwaga

Ta zmiana ma wpływ tylko na usługę Microsoft Dynamics 365 Online Customer Engagement, a nie na wersje lokalne.

Jak wpłynie to na Ciebie lub Twoich klientów?

Wszelkie połączenia z Dynamics 365 (online) w wersji 9.x lub Dynamics 365 (online) government w wersji 8.2 nie powiedzie się, jeśli nie korzystają z protokołu zabezpieczeń TLS 1.2. Będzie to miało wpływ na kilka usług Dynamics (wymienionych poniżej), w tym dostęp do aplikacji internetowej Dynamics 365 Customer Engagement.

Jak można uniknąć wpływu na Ciebie lub Twoich klientów?

W przypadku obsługiwanych przeglądarek internetowych

Wszystkie obsługiwane przeglądarki dla Dynamics 365 Customer Engagement (wersje 7.x — wersja 9.x) są obecnie zgodne ze standardami TLS 1.2 i będą nadal działać tak jak wcześniej. Jeśli jednak w przeglądarce wyłączono protokół TLS 1.2, nastąpi utrata łączności z organizacjami.

W przypadku narzędzi deweloperskich udostępnianych przez firmę Microsoft

Zobacz Co nowego w dokumentacji dla deweloperów usługi Customer Engagement w wersji 9.0 , aby uzyskać najnowsze informacje na temat naszej dokumentacji narzędzi deweloperskich. Zaktualizuj do najnowszej wersji narzędzi używanych podczas programowania z poziomu narzędzia NuGet. Przykłady narzędzi deweloperskich obejmują narzędzie rejestracji wtyczek i narzędzie do migracji konfiguracji. Wersja 9.0 tych narzędzi jest zgodna z poprzednimi wersjami i może być używana do Dynamics 365 (online) w wersji 8.2 Government.

W przypadku kodu skompilowanego przy użyciu zestawu Dynamics 365 SDK

Ponownie skompiluj aplikacje klienckie przy użyciu programu .NET Framework w wersji 4.6.2 lub nowszej. Jeśli kod jest już skompilowany przy użyciu platformy .NET 4.6.2 lub nowszej, nie jest wymagana żadna akcja. W przypadku niestandardowych wtyczek i zestawów przepływu pracy program .NET 4.5.2 powinien być nadal używany.

Znany problem z programem Visual Studio 2015

Podczas uruchamiania projektu/rozwiązania w programie Visual Studio 2015 w trybie debugowania występuje znany problem polegający na tym, że nie można nawiązać połączenia z programem Dynamics 365 (online) w wersji 9.x lub Dynamics 365 (online) w wersji 8.2 Government. Dzieje się tak niezależnie od tego, czy używasz platformy docelowej w wersji 4.6.2 lub nowszej. Może to wystąpić, ponieważ proces hostingu programu Visual Studio jest kompilowany na platformie .NET 4.5, co oznacza, że domyślnie nie obsługuje protokołu TLS 1.2. Proces hostingu programu Visual Studio można wyłączyć jako obejście. Kliknij prawym przyciskiem myszy nazwę projektu w programie Visual Studio, a następnie kliknij pozycję Właściwości. Na karcie Debugowanie możesz usunąć zaznaczenie opcji Włącz proces hostingu programu Visual Studio .

Uwaga

Ma to wpływ tylko na środowisko debugowania w programie Visual Studio 2015. Nie ma to wpływu na skompilowane pliki binarne ani pliki wykonywalne. Ten sam problem nie występuje w programie Visual Studio 2017.

Jedna ważna uwaga dotycząca aplikacji opartych na platformie .NET

Protokół TLS 1.2 można wymusić za pomocą następującego polecenia:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Wymusza to protokół zabezpieczeń TLS 1.2 przez cały czas. Nie jest to zalecane, ponieważ istnieje ryzyko, że będzie trzeba go zaktualizować w przypadku nowszego protokołu zabezpieczeń przyjętego przez branżę.

Dla istniejącego kodu, który nie może zostać ponownie skompilowany

W systemie Windows można użyć ustawienia rejestru, które wymusi użycie przez platformę .NET najwyższego możliwego standardu zabezpieczeń.

Uwaga

Jest to ustawienie dla całej maszyny i może mieć niepożądany wpływ. Zaleca się, aby Ty lub Twój klient korzystali z metody ponownej kompilacji na platformie .NET 4.6.2 lub nowszej.

Aby zaktualizować ustawienia rejestru, które wymuszają na platformie .NET 4.5.2 preferowanie protokołu TLS 1.2 dla całej maszyny, opisano w artykule Microsoft Security Advisory 2960358 . Zobacz sekcję Sugerowane akcje w obszarze "Ręczne wyłączanie RC4 w zabezpieczeniach TLS w systemach z systemem .NET Framework 4.5/4.5.1/4.5.2".

W przypadku oprogramowania spoza platformy .NET

Skontaktuj się z dostawcą, aby dowiedzieć się, jak włączyć protokół TLS 1.2. W przypadku większości języków można to zrobić za pomocą prostego wpisu konfiguracji.

W przypadku programu PowerShell

Dodaj [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 do skryptu programu PowerShell przed wywołaniem polecenia Get-CrmConnection.

W przypadku Dynamics 365 dla programu Microsoft Outlook

Dynamics 365 (online) Government w wersji 8.2 i Dynamics 365 (online) w wersji 9.x

W przypadku usługi Unified Service Desk (USD)

Pobierz najnowszą wersję programu Unified Service Desk (wersje 3.1, 3.2 i 3.3 są zgodne z protokołem TLS 1.2).

Jeśli chcesz nadal korzystać ze starszych wersji usługi Unified Service Desk, musisz zaktualizować wpisy rejestru pulpitu klienckiego.

W przypadku Dynamics 365 tworzenia raportów

Dynamics 365 (online) Government w wersji 8.2

Dynamics 365 (online) w wersji 9.x

W przypadku Dynamics 365 dla routera Email

Dynamics 365 (online) Government w wersji 8.2

Dynamics 365 (online) w wersji 9.x

Przykładowe błędy

Poniżej przedstawiono niektóre potencjalne błędy łączności, które mogą wystąpić w przypadku użycia protokołu zabezpieczeń innych niż TLS 1.2:

Błąd przeglądarki

"Nie można nawiązać bezpiecznego połączenia z tą stroną
Może to być spowodowane tym, że witryna używa nieaktualnych lub niebezpiecznych ustawień zabezpieczeń protokołu TLS. To się dzieje, spróbuj skontaktować się z właścicielem witryny internetowej."

Błąd łącznika

"Microsoft.Xrm.Tooling.CrmConnectControl Informacje: 8: Stan logowania w łączu to = Weryfikowanie połączenia z Microsoft Dynamics CRM...

Microsoft.Xrm.Tooling.Connector.CrmServiceClient Błąd: 2: BŁĄD PODCZAS ŻĄDANIA TOKENU Z kontekstu uwierzytelniania

Microsoft.Xrm.Tooling.Connector.CrmServiceClient Błąd: 2: Źródło: mscorlib

Metoda: ThrowIfExceptional

Błąd: Wystąpił co najmniej jeden błąd.

Ślad stosu: w system.Threading.Tasks.Task.ThrowIfExceptional(Wartość logiczna includeTaskCanceledExceptions)

w: System.Threading.Tasks.Task'1.GetResultCore(Boolean waitCompletionNotification)

w: System.Threading.Tasks.Task'1.get_Result()

at Microsoft.Xrm.Tooling.Connector.CrmWebSvc.ExecuteAuthenticateServiceProcess(Uri serviceUrl, ClientCredentials clientCredentials, userIdentifier user, String clientId, Uri redirectUri, PromptBehavior promptBehavior, String tokenCachePath, Boolean isOnPrem, String authority, Uri& targetServiceUrl, AuthenticationContext& authContext, String& resource)

Wewnętrzny poziom wyjątku 1:

Źródło: Microsoft.IdentityModel.Clients.ActiveDirectory

Metoda : Zamknij

Błąd: Odwołanie do obiektu nie jest ustawione na wystąpienie obiektu.

Ślad stosu: w witrynie Microsoft.IdentityModel.Clients.ActiveDirectory.HttpWebResponseWrapper.Close()

w witrynie Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters.<CreateFromResourceUrlCommonAsync>d__0.MoveNext()

--- koniec śledzenia stosu z poprzedniej lokalizacji, w której zgłoszono wyjątek ---

w: System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

w: System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task)

w witrynie Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters.<CreateFromResourceUrlAsync>d__8.MoveNext()"

błąd Narzędzia programistyczne

"Wewnętrzny poziom wyjątku 1 :

Źródło: System

Metoda: GetResponse

Błąd: Połączenie bazowe zostało zamknięte: wystąpił nieoczekiwany błąd podczas wysyłania.

Ślad stosu: w witrynie System.Net.HttpWebRequest.GetResponse()

at System.ServiceModel.Description.MetadataExchangeClient.MetadataLocationRetriever.DownloadMetadata(TimeoutHelper timeoutHelper)

at System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve(TimeoutHelper timeoutHelper)

Wewnętrzny poziom wyjątku 2:

Źródło: System

Metoda : Odczyt

Błąd: Nie można odczytać danych z połączenia transportowego: istniejące połączenie zostało wymuszone przez hosta zdalnego.

Ślad stosu: w: System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

w: System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)

w: System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)"

Informacje dodatkowe