当ページには広告が含まれています
当ページには広告が含まれています

SQL Server接続エラー

SQL Serverが稼働するOSを変更したところ、SQL Serverへの接続がランダムに失敗する事象が発生しました。(OSはWindows Server 2008 R2からWindows Server 2016に変更)

なかなか、対処方法が見いだせませんでしたが、TLS_DHE暗号化を無効化することで改善できましたのでご紹介します。

事象

クライアント(OSはWindows Server 2012 R2)から、Windows Server 2016で稼働しているSQL Serverにログインすると以下のメッセージが表示され、接続がランダムに失敗する。

サーバーとの接続を正常に確立しましたが、ログイン中にエラーが発生しました。(provider: SSL Provider, error: 0 – 既存の接続はリモート ホストに強制的に切断されました。)

※Windows Server 2008 R2で稼働しているSQL Serverへの接続では問題は発生しない。

広告

原因

マイクロソフトの以下のナレッジに該当
https://docs.microsoft.com/ja-jp/troubleshoot/windows-server/identity/apps-forcibly-closed-tls-connection-errors

Windows Server 2016の更新プログラムでTLS_DHEの仕様が変更(先頭0有り)になり、それ以前にリリースされたWindowsのTLS_DHEの仕様(先頭0無し)と異なるため、TLS接続がランダムに失敗する。

対処

Windows Server 2012 R2(TLSクライアント側)の更新プログラムが提供されていないため、Windows Server 2016(TLSサーバ側)のTLS_DHE無効化を実施。

手順

1、不慮の事態に備えTLS_DHEを無効化するサーバのフルバックアップを取得

2、後でTLS_DHEの設定のみを戻せるように、現在の設定を確認

①管理者権限でPowerShellを起動し以下のコマンドを実行

foreach ($CipherSuite in $(Get-TlsCipherSuite).Name) {
     if ( $CipherSuite.substring(0,7) -eq "TLS_DHE" )
     {
        "Listinng cipher suite: " + $CipherSuite
       Get-TlsCipherSuite -Name $CipherSuite
     }
 }

②Nameの部分をすべて控えておきます。
【Windows10での実行例】

※無効化した設定を戻す場合は以下のコマンドを実行します。
(②で控えたもの全てについて、それぞれコマンドを実行し有効化します。)

【コマンド例】

Enable-TlsCipherSuite -Name TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

3、TLS_DHE暗号化の無効化

①PowerShellで以下のコマンドを実行しTLS_DHE暗号化を無効化します。

foreach ($CipherSuite in $(Get-TlsCipherSuite).Name) {
     if ( $CipherSuite.substring(0,7) -eq "TLS_DHE" )
     {
        "Disabling cipher suite: " + $CipherSuite
        Disable-TlsCipherSuite -Name $CipherSuite
     }
     else
     {
         "Existing enabled cipher suite will remain enabled: " + $CipherSuite
     }
 }
広告

【Windows10での実行例】

②以下のコマンドを実行し、何も表示されないことを確認

foreach ($CipherSuite in $(Get-TlsCipherSuite).Name) {
     if ( $CipherSuite.substring(0,7) -eq "TLS_DHE" )
     {
        "Listinng cipher suite: " + $CipherSuite
       Get-TlsCipherSuite -Name $CipherSuite
     }
 }

当対処後、2ヵ月以上再発していないので、TLS_DHEの仕様変更が原因と判断しています。

広告

コメント

タイトルとURLをコピーしました