次の方法で共有


AD FS での TLS 1.0 の無効化と置換に関する考慮事項

この記事では、Active Directory フェデレーション サービス (AD FS) (AD FS) で TLS 1.0 を無効にして置き換える際のガイダンスと考慮事項について説明します。

元の KB 番号: 3194197

まとめ

多くのお客様は、AD FS で TLS 1.0 と RC4 プロトコルを無効にし、TLS 1.1 以降のバージョンに置き換えるオプションを検討しています。 この記事では、TLS 1.0 を無効にした場合に発生する可能性がある問題について説明し、プロセスの完了に役立つガイダンスを提供します。

AD FS または AD FS プロキシ (WAP) サーバーで TLS 1.0 を無効にすると、これらのサーバーで次のような現象が発生する可能性があります。

  • AD FS プロキシと AD FS サーバーの間の接続が失敗する。 これにより、次のいずれかの条件が発生する可能性があります。

    • ウィザードまたは Windows PowerShell を使用して、プロキシの構成が失敗します。

    • イベント ID 422 は、AD FS プロキシに記録されます。

      フェデレーション サービスからプロキシ構成を取得できません。

    • プロキシは AD FS サーバーにトラフィックを転送できず、次のエラー メッセージが生成されます。

      エラー HTTP 503 - サービスは使用できません。

  • AD FS は、構成されている証明書利用者信頼またはクレーム プロバイダー信頼のフェデレーション メタデータを更新できません。

  • HTTP 503 エラー メッセージが表示されます。

    サービスを利用できません。 フェデレーション ドメインの Office 365 サービスにアクセスする HTTP 503。

  • RDP エラー メッセージが表示されます。

    サーバーへの RDP 接続が失われました。

原因

この問題は、 SChannel レジストリ キーを使用して古いプロトコルを無効にした場合に発生します。 この方法の例については、「レジストリの Disable 古いプロトコル 」セクションを参照してください。

解決方法

重要

慎重にこのセクションの手順に従います。 レジストリを正しく変更しないと、重大な問題が発生する可能性があります。 変更する前に、問題が発生した場合に復元するためにレジストリをバックアップします。

ADFS は、Microsoft .NET Framework を使用して開発されています。 .NET アプリケーションが強力な暗号化 (つまり TLS 1.1 以降) をサポートするには、まず、次のセキュリティ アドバイザリで説明されている更新プログラムをインストールする必要があります。 Microsoft セキュリティ アドバイザリ 2960358

重要

.NET Framework 4.6 がインストールされているシステム上の Windows 10 または .NET Framework 4.5/4.5.1/4.5.2 アプリケーションで .NET Framework 3.5 アプリケーションを実行しているお客様は、TLS で RC4 を手動で無効にするには、このアドバイザリに記載されている手順に従う必要があります。 詳細については、アドバイザリの「 Suggested Actions 」セクションを参照してください。

Note

  • .NET Framework 4.6 を実行しているシステムは既定でのみ保護され、更新する必要はありません。

  • セキュリティ アドバイザリの追加手順では、アドバイザリ記事で説明されているように、 SchUseStrongCrypto レジストリ キーを作成する必要があります。

    この新しいレジストリ キーのサブキーの例:

    • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] SchUseStrongCrypto=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] SchUseStrongCrypto=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] SchUseStrongCrypto=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] SchUseStrongCrypto=dword:00000001
  • 変更を適用するには、次のサービスとアプリケーションを再起動する必要があります。

    • ADFS サービス (adfssrv)
    • デバイス登録サービス (drs)
    • サーバーで実行されている可能性があるその他の .NET アプリケーション
    • ADFS の インターネット インフォメーション サービス (IIS) アプリケーション プール (ADFS 2.0 および ADFS 2.1 にのみ適用されます)

重要

慎重にこのセクションの手順に従います。 レジストリを正しく変更しないと、重大な問題が発生する可能性があります。 変更する前に、問題が発生した場合に復元するためにレジストリをバックアップします。

レジストリで古いプロトコルを無効にする

SChannel レジストリ キーを使用して古いプロトコルを無効にする例は、次の一覧のレジストリ サブキーの値を構成することです。 これにより、SSL 3.0、TLS 1.0、および RC4 プロトコルが無効になります。 この状況は SChannel に適用されるため、サーバーとの間のすべての SSL/TLS 接続に影響します。

reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client" /v Enabled /t REG_DWORD /d 00000000
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" /v Enabled /t REG_DWORD /d 00000000
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" /v Enabled /t REG_DWORD /d 00000000
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 00000000
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" /v Enabled /t REG_DWORD /d 00000000
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" /v Enabled /t REG_DWORD /d 00000000
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" /v Enabled /t REG_DWORD /d 00000000

Note

これらの値を変更した後、コンピューターを再起動する必要があります。

インターネットに接続されているサーバーが古いプロトコルを正常に無効にしたことを確認するには、Qualys SSL Labs などの任意のオンライン SSL テスト検証ツールを使用できます。 詳細については、「 SSL サーバー テスト」を参照してください。

他の解決策

SchUseStrongCrypto レジストリ キーを使用する代わりに、.NET Framework 3.5.1 を使用するときに SystemDefaultTlsVersions レジストリ キーを使用できます。

SystemDefaultTlsVersions は、 update 3154518をインストールした後で使用できます。

レジストリ キーが設定されると、ADFS サービスは SChannel の既定値と動作を優先します。

既知の副作用

ここでは、副作用を知っています.

クライアント アプリケーションが認証のために ADFS サーバーまたは ADFS プロキシに接続できない

ADFS サーバーとプロキシで TLS 1.0 以前のバージョンを無効にする場合、接続しようとしているクライアント アプリケーションで TLS 1.1 以降のバージョンがサポートされている必要があります。

これは、たとえば、Intune ポータル サイト アプリケーションを使用してそのデバイスを登録する場合の Android mobile 4.1.1 の場合に当てはまります。 Intune アプリケーションでは、ADFS サインイン ページを表示できません。

TLS 1.1 は既定で無効になっているため、この Android バージョンではこれが想定されています。

接続エラーの再現中に ADFS サーバーまたはプロキシでネットワーク トレースを収集することで、これらの潜在的な問題の詳細を取得できます。 このシナリオでは、クライアント OS ベンダーまたはアプリケーション ベンダーと連携して、新しい TLS バージョンがサポートされていることを確認できます。 ADFS はフェデレーション メタデータを更新できません。

シナリオ 1

  • ADFS は、証明書利用者信頼またはクレーム プロバイダー信頼からFederationmetadata.xmlを自動的に取得することはできません。

  • XML ファイルを手動で更新しようとすると、次のエラー メッセージが表示されます。

    フェデレーション メタデータの読み取り中にエラーが発生しました。

  • または、Windows PowerShell を使用すると、次のエラー メッセージが表示されます。

    基になる接続が閉じられました。 An unexpected error occurred on a receive. (受信時に予期しないエラーが発生しました。)

基になる例外をより詳しく分析することで、次の情報を確認できます。

PS C:> Update-AdfsRelyingPartyTrust -TargetName "Microsoft Office 365 Identity Platform"
Update-AdfsRelyingPartyTrust: 基になる接続が閉じられました:受信時に予期しないエラーが発生しました。
行: 1 文字: 1
+ Update-AdfsRelyingPartyTrust -TargetName "Microsoft Office 365 Identity Platform ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Microsoft.Ident...lyingPartyTrust:RelyingPartyTrust) [Update-AdfsRelyingP artyTrust], WebException
+ FullyQualifiedErrorId: 基になる接続が閉じられました: 受信時に予期しないエラーが発生しました。,Microso ft.IdentityServer.Management.Commands.UpdateRelyingPartyTrustCommand

PS C:> $error[0] | fl * -f
writeErrorStream : True
PSMessageDetails:
例外: System.Net.WebException: 基になる接続が閉じられました:受信時に予期しないエラーが発生しました。 ---> System.ComponentModel.Win32Exception: クライアントとサーバーは共通のアルゴリズムを持っていないため、通信できません
at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface SecModule, String package, CredentialUse intent, SecureCredential scc)
at System.Net.Security.SecureChannel.AcquireCredentialsHandle(CredentialUse credUsage, SecureCredential& secureCredential)
at System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[]& thumbPrint)
at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output)
at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)
--- 内部例外スタック トレースの終わり ---
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.IdentityServer.Management.Resources.Managers.RelyingPartyTrustManager.ApplyMeta dataFromUrl(RelyingPartyTrust party, Uri metadataUrl, String& warnings)
at Microsoft.IdentityServer.Management.Commands.UpdateRelyingPartyTrustCommand.OperateOnRely ingPartyTrust(RelyingPartyTrust party)
at Microsoft.IdentityServer.Management.Commands.RemoveRelyingPartyTrustCommand.ProcessRecord()
TargetObject : Microsoft.IdentityServer.Management.Resources.RelyingPartyTrust
CategoryInfo : NotSpecified: (Microsoft.Ident...lyingPartyTrust:RelyingPartyTrust)
[Update-AdfsRelyingPartyTrust], WebException
FullyQualifiedErrorId: 基になる接続が閉じられました。受信時に予期しないエラーが発生しました。,Microsoft.IdentityServer.Management.Commands.UpdateRelyingPartyTrustCommand
ErrorDetails: 基になる接続が閉じられました:受信時に予期しないエラーが発生しました。 InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace: at <ScriptBlock>, <ファイルがありません>: 1 行目
PipelineIterationInfo : {0, 1}

ネットワーク トレースを分析しても、ClientHello は表示されません。 また、クライアント自体 (ADFS) は、ClientHello を送信することが予想されるときに接続 (TCP FIN) を閉じています。

3794 <DateTime> 4.0967400 (4588) adfs1 nexus.microsoftonline-p.com.nsatc.net TCP 8192 TCP: [Bad CheckSum]Flags=CE....S.、SrcPort=56156、DstPort=HTTPS(443)
4013 <DateTime> 4.1983176 (0) nexus.microsoftonline-p.com.nsatc.net adfs1 TCP 2097152 TCP:Flags=...ある。。S.、SrcPort=HTTPS(443)、DstPort=56156
4021 <DateTime> 4.1983388 (0) adfs1 nexus.microsoftonline-p.com.nsatc.net TCP 131328 TCP: [Bad CheckSum]Flags=...A..., SrcPort=56156, DstPort=HTTPS(443)
4029 <DateTime> 4.1992083 (4588) adfs1 nexus.microsoftonline-p.com.nsatc.net TCP 131328 TCP: [Bad CheckSum]Flags=...ある。。。F、SrcPort=56156、DstPort=HTTPS(443)
4057 <DateTime> 4.2999711 (0) nexus.microsoftonline-p.com.nsatc.net adfs1 TCP 0 TCP:Flags=...A.R..、SrcPort=HTTPS(443)、DstPort=56156

その理由は、SChannel レジストリ キーが作成されたことです。 これにより、クライアントとしての SSL 3.0 または TLS 1.0 のサポートが削除されます。

ただし、 SchUseStrongCrypto キーは作成されませんでした。 そのため、TCP/IP セッションを確立した後、次の条件を満たして ClientHello を送信する必要があります。

  • 弱い暗号化を使用した .NET (TLS 1.0 以前のバージョンのみ)
  • TLS 1.1 以降のバージョンのみを使用するように構成された SChannel

解決策: SchUseStrongCrypto を適用して再起動します。

Office 365 サービスへのアクセスにおける HTTP 503

シナリオ 2

  • ADFS serviceOffice では、TLS 1.1 以降のバージョンのみがサポートされています。
  • O365 フェデレーション ドメインがある。
  • クライアントがプロキシ認証を使用している一部の O365 サービスにアクセスしています。クライアント アプリケーションは HTTP Basic を使用して資格情報を送信し、O365 サービスは ADFS への新しい接続でこれらの資格情報を使用してユーザーを認証しています。
  • クラウド サービスは TLS 1.0 を ADFS に送信し、ADFS は接続を閉じます。
  • クライアントは応答 HTTP 503 を受け取ります。

たとえば、自動検出にアクセスする場合に当てはまります。 このシナリオでは、Outlook クライアントが影響を受けます。 これは、Web ブラウザーを開き、 https://autodiscover-s.outlook.com/Autodiscover/Autodiscoverに移動することで簡単に再現できます。

xmlRequest 送信:

GET https://autodiscover-s.outlook.com/Autodiscover/Autodiscover.xml HTTP/1.1
ホスト: autodiscover-s.outlook.com
ユーザー エージェント: Mozilla/5.0 (Windows NT 10.0;WOW64;rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip、deflate、br
接続: キープアライブ
承認: 基本 (プライバシーのために削除)

Exchange Online サービスから受信した応答:

HTTP/1.1 503 サービス利用不可
Cache-Control: private
Retry-After: 30
サーバー: Microsoft-IIS/8.0
request-id: 33c23dc6-2359-44a5-a819-03f3f8e85aae
X-CalculatedBETarget: db4pr04mb394.eurprd04.prod.outlook.com
X-AutoDiscovery-Error: LiveIdBasicAuth:FederatedStsUnreachable:<X-forwarded-for:<IP Address>><FederatedSTSFailure>System.Net.WebException: 基になる接続が閉じられました: 送信で予期しないエラーが発生しました。;
X-DiagInfo: DB4PR04MB394
X-BEServer: DB4PR04MB394
X-AspNet-Version: 4.0.30319
Set-Cookie: X-BackEndCookie2=;expires=<DateTime>; path=/Autodiscover; secure;HttpOnly
Set-Cookie: X-BackEndCookie=;expires=<DateTime>; path=/Autodiscover; secure;HttpOnly
X-Powered-By: ASP.NET
X-FEServer: AM3PR05CA0056
日付: <DateTime>
Content-Length: 0

WAP サーバーのネットワーク トレースを分析すると、次のように、クラウドから送信される複数の接続を確認できます。 WAP はクライアント Hello を受信した直後にこれらの接続を終了します (TCP RST)。

3282 <DateTime> 10.8024332 (0) 132.245.225.68 62047 (0xF25F) 10.10.1.5 443 (0x1BB) TCP 52 (0x34) 32 8192 TCP:Flags=CE....S.、SrcPort=62047、DstPort=HTTPS(443)、PayloadLen=0、Seq=1681718623、Ack=0、Win=8192 (ネゴシエート スケール ファクター 0x8) = 8192
3285 <DateTime> 10.8025263 (0) 10.10.1.5 443 (0x1BB) 132.245.225.68 62047 (0xF25F) TCP 52 (0x34) 32 8192 TCP: [Bad CheckSum]Flags=.E.A..S.、SrcPort=HTTPS(443)、DstPort=62047、PayloadLen=0、Seq=3949992650、Ack=1681718624、Win=8192 (ネゴシエートされたスケール ファクター 0x8) = 8192
3286 <DateTime> 10.8239153 (0) 132.245.225.68 62047 (0xF25F) 10.10.1.5 443 (0x1BB) TCP 40 (0x28) 20 517 TCP:Flags=...A...、SrcPort=62047、DstPort=HTTPS(443)、PayloadLen=0、Seq=1681718624、Ack=3949992651、Win=517
3293 <DateTime> 10.8244384 (0) 132.245.225.68 62047 (0xF25F) 10.10.1.5 443 (0x1BB) TLS 156 (0x9C) 136 517 TLS:TLS Rec Layer-1 HandShake: Client Hello.
3300 <DateTime> 10.8246757 (4) 10.10.1.5 443 (0x1BB) 13 2.245.225.68 62047 (0xF25F) TCP 40 (0x28) 20 0 TCP: [Bad CheckSum]Flags=...A.R.、SrcPort=HTTPS(443)、DstPort=62047、PayloadLen=0、Seq=3949992651、Ack=1681718740、Win=0 (スケール ファクター 0x0) = 0

また、Client Hello では TLS 1.0 が使用されていることがわかります。

フレーム: 数値 = 3293、キャプチャされたフレームの長さ = 271、MediaType = NetEvent
+ NetEvent:
+ MicrosoftWindowsNDISPacketCapture: パケット フラグメント (170 (0xAA) バイト)
+ イーサネット: Etype = インターネット IP (IPv4)、DestinationAddress:[00-0D-3A-24-43-98],SourceAddress:[12-34-56-78-9A-BC]
+ Ipv4: Src = <IP アドレス>、Dest = <IP アドレス>、次のプロトコル = TCP、パケット ID = 31775、合計 IP 長 = 156
+ Tcp: Flags=...AP...、SrcPort=62047、DstPort=HTTPS(443)、PayloadLen=116、Seq=1681718624 - 1681718740、Ack=3949992651、Win=517
TLSSSLData: トランスポート層セキュリティ (TLS) ペイロード データ
- TLS: TLS Rec Layer-1 HandShake: Client Hello.
- TlsRecordLayer: TLS Rec Layer-1 HandShake:
ContentType: HandShake:
- バージョン: TLS 1.0
メジャー: 3 (0x3)
マイナー: 1 (0x1)
長さ: 111 (0x6F)
- SSLHandshake: SSL HandShake ClientHello(0x01)
HandShakeType: ClientHello(0x01)
長さ: 107 (0x6B)
- ClientHello: TLS 1.0
+ バージョン: TLS 1.0
+ RandomBytes:
SessionIDLength: 0 (0x0)
CipherSuitesLength: 14
+ TLSCipherSuites: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA { 0xC0,0x14 }
+ TLSCipherSuites: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA { 0xC0,0x13 }
+ TLSCipherSuites: TLS_RSA_WITH_AES_256_CBC_SHA { 0x00, 0x35 }
+ TLSCipherSuites: TLS_RSA_WITH_AES_128_CBC_SHA { 0x00, 0x2F }
+ TLSCipherSuites: TLS_RSA_WITH_3DES_EDE_CBC_SHA { 0x00,0x0A }
+ TLSCipherSuites: TLS_RSA_WITH_RC4_128_SHA { 0x00,0x05 }
+ TLSCipherSuites: TLS_RSA_WITH_RC4_128_MD5 { 0x00,0x04 }
CompressionMethodsLength: 1 (0x1)
CompressionMethods: 0 (0x0)
ExtensionsLength: 52 (0x34)
- ClientHelloExtension: サーバー名 (0x0000)
ExtensionType: サーバー名 (0x0000)
ExtensionLength: 19 (0x13)
NameListLength: 17 (0x11)
NameType: ホスト名 (0)
NameLength: 14 (0xE)
ServerName: sts.contoso.net
+ ClientHelloExtension: 楕円曲線 (0x000A)
+ ClientHelloExtension: EC Point Formats(0x000B)
+ ClientHelloExtension: SessionTicket TLS(0x0023)
+ ClientHelloExtension: 不明な拡張機能の種類
+ ClientHelloExtension: 再ネゴシエーション情報(0xFF01)

このシナリオでは、ADFS プロキシが接続を拒否することが予想されます。 この問題は Exchange Online チームに報告されており、調査中です。

回避策:

  • 先進認証を使用します。

    Note

    これはテストされていません。 ただし、概念的には、ADFS への接続はクライアント アプリケーションから直接行われます。 そのため、TLS 1.1 をサポートしている場合は動作するはずです。

  • WAP/ADFS プロキシで TLS 1.0 サーバーを再度有効にします。

関連情報

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。