web-dev-qa-db-fra.com

Problème lors de la création d'une connexion à SQL Server 2014 avec la source de données ODBC et TLS activés

J'essaie de créer/modifier une source de données système pour mon application qui doit se connecter à notre base de données Microsoft SQL Express 2014 via une source de données ODBC. La connexion fonctionnait avant d'activer le SSL flux de cryptage mais, maintenant que nous avons un lien crypté, la connexion ne fonctionne plus.

Voici quelques détails:

  • Nous exécutons Microsoft SQL Server express 2014 SP1 avec la dernière mise à jour cumulative (CU # 3) (qui était nécessaire pour que nous puissions désactiver SSL 3.0 et TLS 1.0 et ne fonctionner qu'avec TLS 1.1 et TLS 1.2)
  • L'instance de base de données est une instance nommée, configurée pour s'exécuter avec une connexion TCP/IP et un port fixe.
  • Nous avons activé l'option "Forcer le chiffrement" et configuré le certificat via le "Gestionnaire de configuration du serveur SQL"
  • Nous pouvons établir avec succès une connexion à la base de données à l'aide de Management Studio ou de l'utilitaire de ligne de commande SQL
  • Nous avons désactivé toute utilisation de SSL/TLS avant la version TLS 1.1 effectuée via Microsoft Schannel. Cela nous a obligés à mettre à jour SQL Express 2014 SP1 vers la dernière mise à jour cumulative (CU # 3)
  • La source de données ODBC que nous essayons de configurer (via ODBC)) est un "DSN système" et utilise le pilote "SQL server" et cible le même nom de serveur que celui qui travaille dans le studio de gestion (et dont le nom de serveur correspond au nom de domaine complet de la machine qui se reflète dans la valeur CN du certificat)
  • La version indiquée pour le pilote SQL Server ODBC driver est "Microsoft SQL Server ODBC Driver Version 06.03.9600"
  • Je teste la connexion directement via l'outil d'administrateur de source de données ODBC.
  • Le premier test que j'exécute est exécuté sur la même machine exacte que celle hébergeant le serveur de base de données.

Nous obtenons deux messages d'erreur consécutifs dans la connexion Microsoft SQL Server:

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.

J'ai parcouru toute la littérature que j'ai pu trouver mais je ne trouve pas de solution.

MODIFIER 27/01/2016 16:

Suite à la suggestion de l'erg, j'ai essayé d'utiliser la dernière version de MS SQL Server Native Client (11.00.2100 sur mon système), mais cela ne résout toujours pas le problème. Je rencontre cependant un autre problème (que je force ou non le cryptage fort côté client entraîne la même erreur):

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

Donc, j'ai finalement réussi à le faire fonctionner après avoir lutté un peu plus.

Tout d'abord, il semble qu'il existe une autre CU disponible (CU4) pour SQL Server Express 2014 SP1.

Je l'ai téléchargé et installé, mais cela n'a pas résolu mon problème: dès que j'ai désactivé TLS 1.0 et la version inférieure ODBC ne fonctionnait pas.

Étrangement, bien que le CU3 et l'installation de .NET 4.6 m'aient permis de me connecter avec succès dans Management Studio, lorsque j'ai essayé d'exécuter la requête xp_readerrorlog, Cela a en fait échoué.

Ce que j'ai fait pour résoudre mon problème était de suivre la réponse de malthus sur une autre question de débordement de pile connexe https://dba.stackexchange.com/questions/93127/sql-server-service-won-t-start-after- désactivation-tls-1-0-et-ssl-3- (3e réponse à partir du haut).

J'ai donc activé la politique de sécurité locale sur mon ordinateur et réussi à faire fonctionner les liens vers ma base de données SQL.

Maintenant, je fais travailler IIS avec mon propre service et mon client.

BTW, si quelqu'un a besoin d'un moyen plus convivial d'activer les versions SSL/TLS et les algorithmes cryptographiques sur Windows, j'ai trébuché sur une application Nice GUI qui ne nécessite pas d'utiliser regedit pour cela:

https://www.nartac.com/Products/IISCrypto . C'est gratuit et je ne suis pas un employé, un gestionnaire ou un actionnaire de Nartac Software.

J'espère que cela vous aidera!

EDIT 25 févr.2016

Il ressemble à la dernière mise à jour cumulative (CU5 disponible sur https://support.Microsoft.com/en-us/kb/3130926 ) supprime la nécessité d'activer l'option FIPS pour le Cryptographie du système.

J'ai découvert cela car je devais désactiver FIPS pour activer une autre fonctionnalité requise tout en s'appuyant sur une connexion TLS 1.2. En effet, il apparaît que l'activation de l'option FIPS pour la cryptographie système empêche le .NET Framework d'utiliser avec succès certains algorithmes système (tels que SHA256Managed).

En outre, selon certaines discussions vues sur le Web (par exemple http://blogs.technet.com/b/secguide/archive/2014/04/07/why-we-re-not-recommending-fips -mode-plus.aspx ) il n'est pas recommandé d'activer FIPS (sauf pour se conformer strictement à certaines recommandations gouvernementales) car il casse les applications reposant sur des implémentations non validées FIPS d'algorithmes cryptographiques, qui, cependant, sont fournis dans les bibliothèques système Microsoft.

7
user2457451