セキュリティ上の理由から、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を有効にすることはできません。どんな助けでも大歓迎です。
他の回答と同様に、TLS1.2の最新のCUが必要です。 https://support.Microsoft.com/en-us/kb/3052404 を参照してください:
TLS 1.2のみを有効にすると、2つのエラーが発生する可能性があります。
さらに、SQL Serverに接続するすべてのクライアントでSNAC/OBDCドライバーを更新する必要があります。
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、あるいはその両方を有効にすることです。
乾杯マット
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
SQLではこれらのいずれかを有効にする必要がありますが、回避策があります。