接続に TLS 1.2 を要求する Microsoft Dynamics 365 Customer Engagement (オンライン)

Dynamics 365 (オンライン) バージョン 9.x および Dynamics 365 (オンライン) Government バージョン 8.2 では、TLS 1.2 (またはそれ以上) のセキュリティを利用するためにカスタマー エンゲージメント アプリケーションへの接続を要求し始めます。 これは、最新の Microsoft および業界のセキュリティ ポリシーとベスト プラクティスと一致しており、Dynamics 365 Customer Engagement アプリケーションへの接続を維持するためにアクションを実行することが必要になる場合があります。 次の情報を確認して、影響を受けるかどうかと、実行する必要がある可能性がある手順を特定するのに役立ちます。

適用対象:Microsoft Dynamics 365
元の KB 番号: 4051700

TLS とは?

TLS は トランスポート層セキュリティを意味し、インターネット経由で通信される情報のプライバシーを保護するために設計された業界標準であるプロトコルです。 TLS は、HTTPS と TCP 経由で通信する多くの Web ブラウザーやアプリケーションで使用されます。

何が変わるのですか?

現在、Dynamics 365 Customer Engagement オンライン バージョンはすべて TLS 1.0、1.1、1.2 をサポートしていますが、Dynamics 365 (オンライン) バージョン 9.x および Dynamics 365 (オンライン) Government バージョン 8.2 のリリース以降、TLS 1.0 と 1.1 を使用しているクライアントまたはブラウザーからの更新された製品への接続のブロックを開始します。

注:

この変更は、オンプレミスのバージョンではなく、Microsoft Dynamics 365 Online Customer Engagement にのみ影響します。

あなたや顧客にどのような影響を与えますか?

DYNAMICS 365 (オンライン) バージョン 9.x または Dynamics 365 (オンライン) Government バージョン 8.2 への接続は、TLS 1.2 セキュリティ プロトコルを使用しない場合は失敗します。 これは、Dynamics 365 Customer Engagement Web アプリケーションへのアクセスなど、いくつかの Dynamics サービス (以下に示す) に影響します。

ユーザーまたは顧客が影響を受けるのを回避するにはどうすればよいですか?

サポートされている Web ブラウザーの場合

Dynamics 365 Customer Engagement でサポートされているすべてのブラウザー (バージョン 7.x - バージョン 9.x) は現在、TLS 1.2 標準に準拠しており、以前と同様に動作し続けます。 ただし、ブラウザーで TLS 1.2 プロトコルを無効にした場合、影響を受け、組織への接続が失われます。

Microsoft が提供する開発者ツールの場合

開発者ツールのドキュメントの最新情報については、 バージョン 9.0 の Customer Engagement 開発者向け ドキュメントを参照してください。 NuGet から、開発で使用される 最新バージョンのツールに更新します。 開発者ツールの例としては、プラグイン登録ツールと構成移行ツールがあります。 これらのツールのバージョン 9.0 は下位互換性があり、Dynamics 365 (オンライン) バージョン 8.2 Government で使用できます。

Dynamics 365 SDK を使用してビルドされたコードの場合

.NET Framework 4.6.2 以降を使用してクライアント アプリケーションを再コンパイルします。 コードが既に .NET 4.6.2 以降でコンパイルされている場合は、アクションは必要ありません。 カスタム プラグインとワークフロー アセンブリの場合、.NET 4.5.2 は引き続き使用する必要があります。

Visual Studio 2015 の既知の問題

Visual Studio 2015 でプロジェクト/ソリューションをデバッグ モードで実行している場合、Dynamics 365 (オンライン) バージョン 9.x または Dynamics 365 (オンライン) バージョン 8.2 Government に接続できないという既知の問題があります。 これは、4.6.2 以降のターゲット フレームワークを使用しているかどうかに関係なく発生します。 これは、Visual Studio ホスティング プロセスが .NET 4.5 に対してコンパイルされるために発生する可能性があります。これは、既定では TLS 1.2 をサポートしていないことを意味します。 回避策として、Visual Studio ホスティング プロセスを無効にすることができます。 Visual Studio でプロジェクトの名前を右クリックし、[プロパティ] をクリックします。 [ デバッグ ] タブで、[ Visual Studio ホスティング プロセスを有効にする] オプションを オフにすることができます。

注:

これは、Visual Studio 2015 のデバッグ エクスペリエンスにのみ影響します。 これは、ビルドされたバイナリや実行可能ファイルには影響しません。 Visual Studio 2017 でも同じ問題は発生しません。

.NET ベースのアプリの 1 つの重要な注意

次のコマンドを使用して、TLS 1.2 プロトコルを強制できます。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

これにより、常に TLS 1.2 セキュリティ プロトコルが強制されます。 業界で採用されている新しいセキュリティ プロトコルがある場合に、これを更新する必要があるリスクを実行するため、これはお勧めしません。

再コンパイルできない既存のコードの場合

Windows のレジストリ設定を利用して、.NET で可能な限り最高のセキュリティ標準を利用するように強制できます。

注:

これはマシン全体の設定であり、望ましくない影響を与える可能性があります。 お客様またはお客様は、.NET 4.6.2 以降に再コンパイルする方法を利用することをお勧めします。

.NET 4.5.2 がコンピューター全体で TLS 1.2 を優先するように強制するレジストリ設定を更新するには、 Microsoft セキュリティ アドバイザリ 2960358 記事に記載されています。 「.NET Framework 4.5/4.5.1/4.5.2 を実行しているシステムで TLS で RC4 を手動で無効にする」のセクションの推奨されるアクションを参照してください。

.NET 以外のソフトウェアの場合

TLS 1.2 を有効にする方法については、ベンダーにお問い合わせください。 ほとんどの言語では、単純な構成エントリを使用して行うことができます。

PowerShell の場合

を呼び出すGet-CrmConnection前に、PowerShell スクリプトに を追加[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12します。

Microsoft Outlook のDynamics 365

Dynamics 365 (オンライン) Government バージョン 8.2 および Dynamics 365 (オンライン) バージョン 9.x

Unified Service Desk (USD) の場合

最新バージョンの Unified Service Desk をダウンロードします (バージョン 3.1、3.2、3.3 は TLS 1.2 に準拠しています)。

古いバージョンの Unified Service デスクを引き続き使用する場合は、 クライアント デスクトップのレジストリ エントリを更新する必要があります。

レポート作成のDynamics 365

Dynamics 365 (オンライン) Government バージョン 8.2

Dynamics 365 (オンライン) バージョン 9.x

Email ルーターのDynamics 365

Dynamics 365 (オンライン) Government バージョン 8.2

Dynamics 365 (オンライン) バージョン 9.x

エラーの例

TLS 1.2 以外のセキュリティ プロトコルが使用されている場合に発生する可能性のある接続エラーを次に示します。

ブラウザー エラー

"このページに安全に接続できない
これは、サイトで古い TLS セキュリティ設定または安全でない TLS セキュリティ設定が使用されていることが原因である可能性があります。 これは、Web サイトの所有者に問い合わせてみてください。

コネクタ エラー

"Microsoft.Xrm.Tooling.CrmConnectControl 情報: 8: Connect のログイン状態は = Microsoft Dynamics CRM... への接続の検証です。

Microsoft.Xrm.Tooling.Connector.CrmServiceClient エラー: 2: 認証コンテキストからのトークン要求エラー

Microsoft.Xrm.Tooling.Connector.CrmServiceClient エラー: 2 : ソース : mscorlib

メソッド: ThrowIfExceptional

エラー: 1 つ以上のエラーが発生しました

スタック トレース : System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)

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

at 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, String tokenCachePath, Boolean isOnPrem, String authority, Uri& targetServiceUrl, AuthenticationContext& authContext, String& resource)

内部例外レベル 1:

ソース: Microsoft.IdentityModel.Clients.ActiveDirectory

メソッド: Close

エラー: オブジェクト参照がオブジェクトのインスタンスに設定されていません

スタック トレース: microsoft.IdentityModel.Clients.ActiveDirectory.HttpWebResponseWrapper.Close()

Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters で。<CreateFromResourceUrlCommonAsync>d__0.MoveNext()

--- 例外がスローされた以前の場所からのスタック トレースの終了---

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters で。<CreateFromResourceUrlAsync>d__8.MoveNext()"

開発者ツール エラー

"内部例外レベル 1:

ソース: システム

メソッド : GetResponse

エラー: 基になる接続が閉じられました:送信時に予期しないエラーが発生しました

スタック トレース : System.Net.HttpWebRequest.GetResponse()

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

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

内部例外レベル 2:

ソース: システム

メソッド: 読み取り

エラー: トランスポート接続からデータを読み取ることができません:既存の接続がリモート ホストによって強制的に閉じられました。

スタック トレース: System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) で

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

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

追加情報