Office 365 の TLS 1.0/1.1 無効化に伴う AD FS / WAP (AD FS Proxy) の対応


こんにちは、 Azure ID の三浦です。

今回は Office 365 での TLS 1.0 1.1 のサポート無効化に伴う AD FS / WAP (AD FS Proxy) での対応についてまとめました。

次の情報にありますように 2018/3/1 Office 365 では TLS 1.0 1.1 のサポートを無効化することを予定しています。

 

Office 365 への TLS 1.2 の実装に対する準備

https://support.microsoft.com/ja-jp/help/4057306/preparing-for-tls-1-2-in-office-365

 

フェデレーション環境では、 AD FS および WAP (Windows Server 2012 以前 AD FS Proxy) TLS 1.2 による接続を有効にする必要があります。実際のところ以下の表のとおり最近の OS (Windows Server 2012 以降) であれば既定で TLS 1.2 を利用するようになっており、このときには特別な対処は必要ありません (例えば AD FS および WAP Windows Server 2012 R2 で構成されている場合)。

 

AD FS サーバーの OS 毎にサポートされるセキュリティ プロトコル一覧

* Windows Sever 2008 はパッチ適用した上でのレジストリ設定が必要です。

 

TLS 1.2 の設定状況の確認と設定方法

 

Windows Server 2012 以降の OS であれば、特に明示的に設定を変えていなければ対処は不要です。

本当に大丈夫かは HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols キー配下に何も設定が無い (既定の状態)、もしくは以下のように明示的に有効にする設定が入っているかで判断でき、この状態では TLS 1.2 が利用されています。

Windows Server 2008 / 2008 R2 の場合には、既定では TLS 1.2 は無効であり、対処が必要です。このときはに次のように値を設定します。

値を変更した場合には、システムの再起動をします。

 

キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.2\Server

名前:Enabled

タイプ: REG_DWORD

値:1

名前:DisabledByDefault

タイプ: REG_DWORD

値:0

 

なお、管理者権限で次の PowerShell コマンドを実行することで一括して上記設定が可能です。

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value '1' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value '0' -PropertyType 'DWord' -Force | Out-Null

Write-Host 'TLS 1.2 has been enabled.'

 

TLS 1.2 を実際に利用しているか確認する方法

 

クライアントが TLS 1.2 を利用しているかは、以下のサイトでテストできます。

 

注: このテストはあくまでもブラウザを利用したテストになります。TLS 1.2 を利用するかは後述するように OS 自体での設定に加えてアクセスするコンポーネント側の設定にも依存します (ブラウザ自体の設定や後から述べるように .NET Framework が TLS を利用する際には .NET Framework の設定でも TLS 1.2 を利用できるように設定する必要があります)。Office 365 に対してブラウザ以外のアプリケーションでアクセスする場合には、ブラウザが利用する wininet というコンポーネントではなく winhttp というコンポーネントが利用される可能性があります。このときは winhttp 側でも TLS 1.2 を利用するように構成する必要があります。詳細はリンクの公開情報も参照ください。残念ながらブラウザ以外を利用している場合に TLS 1.2 を利用しているかはこの方法では確認ができません。

 

Qualys SSL Labs

https://www.ssllabs.com/

 

アクセスすると以下の画面が表示されますので、画面赤枠の [Test your browser >>] をクリックします。

※ 実行した結果、「Your user agent supports TLS 1.2, which is recommended protocol version at the moment.」 と表示された場合には TLS 1.2 を利用している状態です。

※ 以下のように表示された場合には、TLS 1.2 の設定状況の確認と設定方法に従って有効化します。

なお、 TLS 1.2 を利用するかはブラウザ側でも設定がありますので、ブラウザの設定で TLS 1.2 が使用できるように構成されているかも合わせてご確認ください。

以上はクライアント側での確認方法ですが、サーバー側についても WAP サーバーに対しては、同じく Qualys SSL Labs のサイトで Test your server >> から AD FS のサービス名 (sts.xxxxx.xxx など) を指定して Submit することでサーバー側の TLS の対応状況を確認できます。

(TLS 1.2 のみを利用するように構成したブラウザからアクセスしてアクセスできるか確認するという方法もあります )

TLS 1.0 1.1 1.2 に対応している場合の表示結果例です。

 

 

AD FS にて TLS 1.0 / TLS 1.1 を無効にする

 

Office 365 での TLS 1.2 必須化に伴い、 AD FS やアクセスするクライアントで TLS 1.0 / 1.1 を無効にすることは必須ではありません。ただ、セキュリティ観点から TLS 1.0 /1.1 を無効にしたいという要件もあると思います。しかし、このとき注意が必要です。AD FS WAP (AD FS Proxy) 間では .NET Framework を利用した通信を実施しますが、この通信は既定で TLS 1.0 を利用します。そのため、AD FS で TLS 1.0/1.1 を無効にするには事前に .NET Framework で TLS 1.2 を利用するように構成し、そのあとで TLS 1.0 / 1.1 を無効にする必要があります。

 

.NET Framework の設定を変更しておけば、AD FS と WAP (AD FS Proxy) で TLS 1.0/1.1 を無効にしても、このバージョンのみを使用できるクライアントからのアクセスができなくなる以外に基本的には想定される影響はありません。ただ、過去に TLS 1.0 を無効にした場合にいくつか発生する問題も報告されており、ご使用の環境では TLS 1.0/1.1 を無効にすると問題が発生し、再度有効にする必要がある場合もありますので、以下の公開情報も参照ください。

 

Considerations for disabling and replacing TLS 1.0 in ADFS

https://support.microsoft.com/en-us/help/3194197/considerations-for-disabling-and-replacing-tls-1-0-in-adfs

 

.NET Framework を利用した通信で TLS 1.2 を利用するようにする

 

AD FS および WAP (AD FS Proxy) サーバーで .NET Framework に関するレジストリを設定します。

Windows Server 2016 よりも前の OS では、 .NET Framework TLS 1.2 を利用できるような修正プログラムが必要です。そのために以下のセキュリティ アドバイザリ 2960358 を適用します。

 

マイクロソフト セキュリティ アドバイザリ 2960358

https://technet.microsoft.com/library/security/2960358

 

この更新プログラムのインストール時に発生する可能性のある既知の問題が報告されておりますので、併せてご確認ください。

(.NET Framework を使用している製品は多くあります。 AD FS / WAP 以外の役割を兼ねている場合には、更新プログラムの適用、 TLS 1.2 を利用させるように変更する際に他に影響が無いかの動作確認が必要です)

 

セキュリティ更新プログラム 2960358 をインストールした後に、Internet Explorer でホストされるマネージ コントロールを含むアプリケーションとノータッチ デプロイメントが正しく機能しないことがある

https://support.microsoft.com/ja-jp/kb/2978675

 

更新プログラムの適用が完了しましたら以下のレジストリを変更します。

Windows Server 2016 および Windows Server 2012 R2 .NET Framework 4.0/4.5 を利用するため v4.0.30319 キー配下に設定を実施します。

Windows Server 2012 以前は .NET Framework 3.5 を利用するため v2.0.50727 キー配下に設定を実施します。

(両方ともに設定を実施しても問題ありません)

 

キー:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319

名前: SchUseStrongCrypto

タイプ: REG_DWORD

値:1

 

 キー:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727

 名前: SchUseStrongCrypto

タイプ: REG_DWORD

 値:1

 

TLS 1.0 / 1.1 無効化方法

 

.NET Framework の設定が完了しましたら TLS 1.0/1.1 をレジストリ設定により無効にします。TLS 1.0/1.1 を無効にする際のレジストリは以下です。レジストリを変更しましたら、システムを再起動します。

 

キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.0\Server

名前:Enabled

タイプ: REG_DWORD

値:0

 

名前:DisabledByDefault

タイプ: REG_DWORD

値:1

 

キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.1\Server

名前:Enabled

タイプ: REG_DWORD

値:0

 

名前:DisabledByDefault

タイプ: REG_DWORD

値:1

 

なお、管理者権限で次の PowerShell コマンドを実行することで一括して上記設定が可能です。

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

Write-Host 'TLS 1.0 has been disabled.'

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null

New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

Write-Host 'TLS 1.1 has been disabled.'

 

補足

 

今回は AD FS / WAP (AD FS Proxy) 観点での対処をまとめましたのでサーバー側の観点で説明してきましたが、実際のところ TLS ではクライアント側の設定も存在します。クライアントで TLS 1.2 を有効にする、 TLS 1.0/1.1 を無効にするレジストリはここまでで説明してきたものとは別です。具体的には、TLS 1.0 のサーバー側レジストリは HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.0\Server キーですが、クライアント側は HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.0\Client です。冒頭の表もサーバー側のものであり、クライアント側の対応表は次の通りです (Windows Server がクライアントとして動作するときにも下表の通りです)。

 

* Windows Sever 2008 はパッチ適用した上でのレジストリ設定が必要です。

 

この表のとおりサーバーとして動作する場合 (AD FS のようにリクエストを受け付ける場合)、 Windows Server 2008 R2 は既定で TLS 1.2 が無効ですが、クライアント側 (ブラウザを起動してアクセス元となる場合) では Windows 7 / Windows Server 2008 R2 は TLS 1.2 が有効です (正確には OS の既定値ではありませんが、ブラウザの設定次第で有効にできます)。ブラウザのバージョンによっては TLS 1.2 は有効になっていませんので、有効にします (ブラウザ以外については、前述したように winHTTP に関するレジストリ設定が必要です)。

なお、クライアント側で TLS 1.0 / 1.1 を無効にするためには、次のレジストリを設定します。

キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.0\Client

名前:Enabled
タイプ: REG_DWORD
値:0

名前:DisabledByDefault
タイプ: REG_DWORD
値:1

キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.1\Client

名前:Enabled
タイプ: REG_DWORD
値:0

名前:DisabledByDefault
タイプ: REG_DWORD
値:1

 

PowerShell では次のコマンドで無効に設定できます。

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null

 

 

参考情報

 

Solving the TLS 1.0 Problem

https://www.microsoft.com/en-us/download/details.aspx?id=55266

 

Managing SSL/TLS Protocols and Cipher Suites for AD FS

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/manage-ssl-protocols-in-ad-fs

 

Transport Layer Security (TLS) registry settings

https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings

 

[IT 管理者向け] TLS 1.2 への移行を推奨しています

https://blogs.technet.microsoft.com/jpsecurity/2017/07/11/tlsmigration/

 

更新履歴

2018/01/10: 新規作成

2018/01/12: TLS の設定についてクライアント側とサーバー側の設定についての記載を分離

2018/01/17: 無効にする設定の誤りを修正


Comments (0)

Skip to main content