web-dev-qa-db-ja.com

TLS 1.0およびSSL 3.0を無効にした後、SQLサーバーサービスが開始されない

セキュリティ上の理由から、WindowsではTLS 1.0以前のプロトコルを無効にし、次のレジストリパスでTLS 1.1とTLS 1.2のみを有効にしました。HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocolsその後、SQLサービスが勝ち次のエラーで始まりません:

2015-02-13 17:35:10.12 spid13s     The server could not load the certificate it needs to initiate an SSL connection. It returned the following error: 0x80090331. Check certificates to make sure they are valid.
2015-02-13 17:35:10.12 spid13s     Error: 26014, Severity: 16, State: 1.
2015-02-13 17:35:10.12 spid13s     Unable to load user-specified certificate [Cert Hash(sha1) "9B49E2FB65EE880F7C8818A90187F572566C9213"]. The server will not accept a connection. You should verify that the certificate is correctly installed. See "Configuring Certificate for Use by SSL" in Books Online.
2015-02-13 17:35:10.12 spid13s     Error: 17182, Severity: 16, State: 1.
2015-02-13 17:35:10.12 spid13s     TDSSNIClient initialization failed with error 0x80092004, status code 0x80. Reason: Unable to initialize SSL support. Cannot find object or property. 
2015-02-13 17:35:10.12 spid13s     Error: 17182, Severity: 16, State: 1.
2015-02-13 17:35:10.12 spid13s     TDSSNIClient initialization failed with error 0x80092004, status code 0x1. Reason: Initialization failed with an infrastructure error. Check for previous errors. Cannot find object or property. 
2015-02-13 17:35:10.12 spid13s     Error: 17826, Severity: 18, State: 3.
2015-02-13 17:35:10.12 spid13s     Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.
2015-02-13 17:35:10.12 spid13s     Error: 17120, Severity: 16, State: 1.
2015-02-13 17:35:10.12 spid13s     SQL Server could not spawn FRunCommunicationsManager thread. Check the SQL Server error log and the Windows event logs for information about possible related problems.

イベントマネージャーでは、次のフローを確認できます(Schannelのログが増加しています)。

Info – Schannel – Creating an SSL client credential.
Info – Schannel – Creating an SSL server credential.
Error - Schannel - A fatal error occurred while creating an SSL client credential. The internal error state is 10013.

詳細なSchannelエラー:

<Event xmlns="http://schemas.Microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Schannel" Guid="{1F678132-5938-4686-9FDC-C8FF68F15C85}" /> 
    <EventID>36871</EventID> 
    <Version>0</Version> 
    <Level>2</Level> 
    <Task>0</Task> 
    <Opcode>0</Opcode> 
    <Keywords>0x8000000000000000</Keywords> 
    <TimeCreated SystemTime="2015-02-16T15:22:16.166776400Z" /> 
    <EventRecordID>5943102</EventRecordID> 
    <Correlation /> 
    <Execution ProcessID="712" ThreadID="772" /> 
    <Channel>System</Channel> 
    <Computer>(deleted)</Computer> 
    <Security UserID="S-1-5-18" /> 
  </System>
  <EventData>
    <Data Name="Type">server</Data> 
    <Data Name="ErrorState">10013</Data> 
  </EventData>
</Event>

WireSharkを使用すると、クライアントまたはサーバーのHelloメッセージは表示されません。エラーはTLSネゴシエーションの前に発生しているようです-おそらくサーバー証明書の解析中です。

ProccessMonitorを使用すると、sqlserver.exeサービスがレジストリから証明書を読み取り、CRL(なし)、CTL(なし)を読み取り、最初のエラーログメッセージに従います。最初のログエラーの前のProcMonからの最後のログをいくつか次に示します。

12:22:09.8165314 PM sqlservr.exe    23256   RegCloseKey HKLM\SOFTWARE\Microsoft\SystemCertificates\MY\Certificates  SUCCESS 
12:22:09.8165667 PM sqlservr.exe    23256   RegQueryKey HKLM\SOFTWARE\Microsoft\SystemCertificates\MY\CRLs  SUCCESS Query: Cached, SubKeys: 0, Values: 0
12:22:09.8166280 PM sqlservr.exe    23256   RegQueryKey HKLM\SOFTWARE\Microsoft\SystemCertificates\MY\CTLs  SUCCESS Query: Cached, SubKeys: 0, Values: 0
12:31:01.0048783 PM sqlservr.exe    9928    RegCloseKey HKLM\SOFTWARE\Microsoft\SystemCertificates\MY   SUCCESS 
12:22:09.8177144 PM sqlservr.exe    23256   WriteFile   C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2014\MSSQL\Log\ERRORLOG  SUCCESS Offset: 7,530, Length: 422

SQLサーバーをVerisignからの証明書で設定することも試みました(30日間のトライアル)。すべての設定を説明どおりに設定しました ここ

そして、私達は here (- here からの参照を介してそこに行きました)のように答えに従いました。

残念ながら、運はありません。まだ同じエラー。

また、SQL構成マネージャーで「強制暗号化」を無効にして証明書を削除しようとしましたが、SQLサーバーは自己署名証明書の作成を試み、同じエラーコード0x80090331で失敗します。

私は同様の質問が投稿されていることを知っています here ですが、TLS 1.0を無効にすることなく自己受け入れられます。

同じ設定と同じ証明書を使用して、TLS 1.0が有効になっている場合、もう1つ注意してください。すべて正常に機能します。 TLS 1.0が無効になっていると、失敗します。したがって、TLS 1.1+は証明書に何かが好きではないようです。または、SQL ServerはTLS 1.1+を好きではないようです。

TLS 1.0を有効にすることはできません。どんな助けでも大歓迎です。

22
Jiri Mares

他の回答と同様に、TLS1.2の最新のCUが必要です。 https://support.Microsoft.com/en-us/kb/3052404 を参照してください:

  • SQL Server 2014の累積的な更新8
  • SQL Server 2014 SP1用の累積的な更新1
  • SQL Server 2012 SP2用の累積的な更新6
  • SQL Server 2014の累積的な更新7

TLS 1.2のみを有効にすると、2つのエラーが発生する可能性があります。

  1. SQL Server 2014エージェントは起動しません。解決策:2012 CUの1つからSQL Server 2012 SNACをインストールします...
  2. SQL Server Management Studioが接続できません。解決策:.net Framework v4.6をインストールします。

さらに、SQL Serverに接続するすべてのクライアントでSNAC/OBDCドライバーを更新する必要があります。

15
Jens W.

SQL ServerはSSL 3.0とTLS 1.0のみをサポートします。少なくとも1つを有効にする必要があります。そうしないと、SQL Serverを起動できません。 SQL ServerはTLS 1.1、1.2などをサポートしていません。具体的にはTLS 1.0を使用しています。

ここでのオプションは、SSL 3.0またはTLS 1.0、あるいはその両方を有効にすることです。

乾杯マット

8
Mat

1月29日の時点で、Microsoft SQL Serverは、SQL Server 2008、SQL Server 2008 R2、SQL Server 2012およびSQL Server 2014のTLS 1.2と、サーバーネイティブクライアント、Microsoft ODBC SQL Server、SQL ServerおよびADO.NET(SqlClient)用のMicrosoft JDBCドライバー。

リリースに関するブログ投稿: http://blogs.msdn.com/b/sqlreleaseservices/archive/2016/01/29/tls-1-2-support-for-sql-server-2008-2008- r2-2012-and-2014.aspx

TLS 1.2をサポートするビルドと、クライアントおよびサーバーコンポーネントのダウンロード場所(KB3135244)のリスト: http://support.Microsoft.com/kb/3135244

6
Amit Banerjee

SQLではこれらのいずれかを有効にする必要がありますが、回避策があります。

  • Gpedit.mscを開きます。ローカルグループポリシーエディターで、[コンピューターの構成]ノードの下の[Windowsの設定]をダブルクリックし、[セキュリティの設定]をダブルクリックします。
  • [セキュリティの設定]ノードで、[ローカルポリシー]をダブルクリックし、[セキュリティオプション]をクリックします。
  • 詳細ウィンドウで、[システム暗号化:暗号化、ハッシュ、署名にFIPS準拠のアルゴリズムを使用する]をダブルクリックします。
  • [システム暗号化:暗号化、ハッシュ、署名にFIPS準拠のアルゴリズムを使用する]ダイアログボックスで、[有効]をクリックし、[OK]をクリックしてダイアログボックスを閉じます。ローカルグループポリシーエディターを閉じます。
4
rmathus