web-dev-qa-db-fra.com

MSSQL avec SSL: le nom principal cible est incorrect

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:

  • Gestionnaire de configuration de serveur SQL
  • Configuration réseau du serveur SQL
  • Protocoles pour (MYSQLSERVERNAME)
  • Clic droit: Propriétés
  • Drapeaux tab.

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?

7
Joseph

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:

  • Ouvrir Gestionnaire de configuration SQL Server .
  • Recherchez le compte utilisé pour exécuter l'instance MSSQL ( Log On tab sur l'instance MSSQL Properties ).
  • OuvrezMMCConsole et ajoutez le composant logiciel enfichable Certificats (ordinateur local).
  • Recherchez dans le magasin de certificats, cliquez avec le bouton droit sur le certificat et sélectionnez Toutes les tâches -> Gérer les clés privées ... .
  • Définissez le autorisations sur le même compte sous lequel MSSSQL s'exécute. 
2
Joseph

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:

 enter image description here

Au lieu de 127.0.0.1 (ou ce que vous avez là), placez le CN sur le certificat et cette connexion devrait fonctionner.

5
Meadowlark Bradsher

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.

0
Jthorpe