J'ai correctement configuré SSL sur Microsoft SQL Server 2012 Express Edition dans le but de chiffrer les connexions réseau externes à la base de données établies via Internet. Pour des raisons de performances des clients internes sur le réseau, je ne souhaite pas forcer l'utilisation de SSL et laisser aux clients la possibilité de l'utiliser ou non. Je règle Force Encryption sur Non avec les étapes suivantes:
Lorsque j'essaie d'établir une connexion chiffrée avec Microsoft SQL Server Management Studio, vérifiez Chiffrer la connexion option sur Options > Propriétés de la connexion J'obtiens le message d'erreur suivant.
Une connexion a été établie avec le serveur, mais une erreur est survenue pendant le processus de connexion. (fournisseur: fournisseur SSL, erreur: 0 - le nom du principal cible est incorrect.) (Microsoft SQL Server, erreur: -2146893022)
Ce qui est frappant, c’est que si je sélectionne Forcer le chiffrement comme Oui sur Sql Server Configuration Manager et que je ne sélectionne pas Crypter la connexion sur Microsoft Sql Server Management Studio, je peux me connecter à la base de données. Si j'exécute la requête:
select * from sys.dm_exec_connections
En fait, la colonne encrypt_option est vraie.
Le certificat a été généré avec Openssl et voici les informations:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
Validity
Not Before: Jun 9 15:53:18 2016 GMT
Not After : Jun 9 15:53:18 2018 GMT
Subject: C=US, ST=State, L=Location, O=Testing, OU=Development, CN=JOSEPH-ASUS
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
...
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
DB:7F:58:DC:F7:D9:90:2A:DF:0E:31:84:5C:49:68:E7:61:97:D8:41
X509v3 Authority Key Identifier:
keyid:C9:5C:79:34:E0:83:B2:C7:26:21:90:17:6A:86:88:84:95:19:88:EA
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage:
Key Encipherment, Data Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Alternative Name:
DNS:alternatename1, DNS:alternatename2, IP Address:192.168.1.100, IP Address:192.191.1.101, IP Address:192.168.1.103
Signature Algorithm: sha256WithRSAEncryption
...
Le système d'exploitation actuel est Windows 10 Home.
Qu'est-ce que je manque?
Le certificat généré avec OpenSSL fonctionne correctement. Dans mon cas, le problème était les droits du compte sous lequel MSSQL est exécuté sur le certificat. J'ai résolu ce problème en procédant comme suit:
J'ai reçu cette erreur quand je faisais quelque chose de similaire. J'ai également créé un certificat OpenSSL et l'ai importé dans SQL Server. J'ai également utilisé SQL Server Management Studio pour tenter de vérifier que la copie du certificat côté client était requise. Quand j'ai fait cela, j'ai eu l'erreur décrite ci-dessus.
La solution était simplement que, dans la fenêtre de connexion, je n'utilisais pas le CN figurant sur le certificat:
Au lieu de 127.0.0.1 (ou ce que vous avez là), placez le CN sur le certificat et cette connexion devrait fonctionner.
J'ai eu cette erreur en essayant de vous connecter via sqlcmd à un serveur nécessitant une authentification intégrée Windows (option -E
), mais ayant utilisé accidentellement l'authentification Azure Active Directory (option -G
). La sélection des indicateurs corrects l'a corrigé pour moi. Notez que cela équivaut à inclure Trusted_Connection=True
dans la chaîne de connexion.