web-dev-qa-db-ja.com

ODBCデータソースとTLSをアクティブにしてSQL Server 2014への接続を作成する際の問題

ODBCデータソースを介してMicrosoft SQL Express 2014データベースに接続する必要があるアプリケーションのシステムデータソースを作成/変更しようとしています。SSLを有効にする前に接続が機能していた暗号化フローですが、暗号化されたリンクがあるため、接続は機能しなくなります。

詳細は次のとおりです。

  • Microsoft SQL Server Express 2014 SP1を最新の累積的な更新プログラム(CU#3)で実行します(これは、SSL 3.0およびTLS 1.0を非アクティブにして、TLS 1.1およびTLS 1.2でのみ実行できるようにするために必要でした)
  • データベースインスタンスは、TCP/IP接続と固定ポートで実行するように構成された名前付きインスタンスです。
  • 「Force Encryption」オプションを有効にし、「Sql Server Configuration Manager」を通じて証明書を構成しました
  • Management StudioまたはSQLコマンドラインユーティリティを使用して、データベースへの接続を正常に確立できます。
  • Microsoft Schannelを介して行われるバージョンTLS 1.1より前のSSL/TLSの使用をすべて無効にしました。そのため、SQL Express 2014 SP1を最新の累積的な更新プログラム(CU#3)に更新する必要がありました。
  • ODBCデータソース(ODBCデータソースアドミニストレーターを介して)を構成しようとする)は「システムDSN」であり、「SQLサーバー」ドライバーを使用して、 Management Studioで動作しているものとまったく同じサーバー名(およびそのサーバー名は、証明書のCN値に反映されているマシンのFQDNに対応しています)
  • SQL Serverに示されているバージョンODBCドライバは「Microsoft SQL Server ODBC Driver Version 06.03.9600 "です。
  • ODBCデータソースアドミニストレータツールを使用して直接接続をテストしています。
  • 最初に実行するテストは、データベースサーバーをホストしているマシンとまったく同じマシンで実行されます。

Microsoft SQL Serverログインに2つの連続したエラーメッセージが表示されます。

Connection failed:
SQLState : '01000'
SQL Server Error: 771
[Microsoft][ODBC SQL Server Driver][TCP/IP  Sockets]ConnectionOpen(SECDoClientHandshake()).
Connection failed:
SQLState : '08001'
SQL Server Error: 18
[Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SSL Security error.

私は見つけることができたが解決策を見つけることができないすべての文献を調べました。

編集27/01/2016 16:

Ergの提案に従って、最新のMS SQL Server Native Clientバージョン(私のシステムでは11.00.2100)を使用しようとしましたが、それでも問題は解決しません。ただし、別の問題が発生します(クライアント側で強力な暗号化を強制するかどうかにかかわらず、同じエラーが発生します)。

Running connectivity tests...

Attempting connection
[Microsoft][SQL Server Native Client 11.0]TCP Provider: An existing connection was forcibly closed by the remote Host.

[Microsoft][SQL Server Native Client 11.0]Client unable to establish connection

TESTS FAILED!
6
user2457451

だから、もう少し苦労してやっと動いた。

まず、SQL Server Express 2014 SP1で利用できる別のCU(CU4)があるようです。

ダウンロードしてインストールしましたが、問題は解決しませんでした。TLS1.0以下のバージョンODBCを無効にするとすぐに機能しませんでした。

奇妙なことに、CU3と.NET 4.6のインストールによりManagement Studioに正常にログインできましたが、xp_readerrorlogクエリを実行しようとすると実際には失敗しました。

私の問題を解決するために私がしたことは、別の関連するスタックオーバーフローの質問でマルサスの回答に従うことでした https://dba.stackexchange.com/questions/93127/sql-server-service-won-t-start-after- disables-tls-1-0-and-ssl-3- (上から3番目の回答)。

したがって、自分のコンピューターでローカルセキュリティポリシーをアクティブにし、SQLデータベースへのリンクを機能させることができました。

現在、IISを自分のサービスに沿って動作させ、クライアントを動作させています。

ところで、誰かがWindowsでSSL/TLSバージョンと暗号化アルゴリズムをアクティブにするよりユーザーフレンドリーな方法を必要とする場合、regeditを使用する必要のない素敵なGUIアプリケーションを見つけました。

https://www.nartac.com/Products/IISCrypto 。これは無料で、私はNartac Softwareの従業員、マネージャー、株主ではありません。

これが役に立てば幸いです!

編集2016年2月25日

最新の累積的な更新(CU5は https://support.Microsoft.com/en-us/kb/3130926 で入手可能)のように見えます。これにより、FIPSオプションをアクティブにする必要がなくなります。システム暗号化。

TLS 1.2接続に依存しながら、別の必要な機能を有効にするためにFIPSを非アクティブ化する必要があったため、これを発見しました。実際、システム暗号化のFIPSオプションをアクティブにすると、.NET Frameworkが一部のシステムアルゴリズム(SHA256Managedなど)を正常に使用できなくなるようです。

さらに、ウェブ上で見られたいくつかの議論によると(つまり http://blogs.technet.com/b/secguide/archive/2014/04/07/why-we-re-not-recommending-fips -mode-anymore.aspx )FIPSをアクティブにすることはお勧めしません(一部の政府の推奨事項に厳密に準拠している場合を除く)。これは、暗号化アルゴリズムの非FIPS検証済み実装に依存するアプリケーションを破壊するためです。 Microsoftシステムライブラリで提供されます。

7
user2457451