2016-06-09 46 views
3

Ich konfigurierte erfolgreich SSL auf Microsoft SQL Server 2012 Express Edition für die Verschlüsselung von externen Netzwerkverbindungen zur Datenbank, die über das Internet hergestellt werden. Aus Leistungsgründen für interne Clients im Netzwerk möchte ich die Verwendung von SSL nicht erzwingen und den Clients die Option überlassen, sie zu verwenden oder nicht. Ich habe Erzwingen der Verschlüsselung zu Nr mit den folgenden Schritten:MSSQL mit SSL: Der Zielprinzipalname ist falsch

  • SQL Server Configuration Manager
  • SQL Server-Netzwerkkonfiguration
  • Protokolle für (MYSQLSERVERNAME)
  • Rechts click: Eigenschaften
  • Fahnen tab.

Wenn ich versuche, eine verschlüsselte Verbindung mit Microsoft SQL Server Management Studio Überprüfung Encrypt Verbindung Option auf Optionen>Verbindungseigenschaften ich die Fehler folgenden erhalten zu etablieren.

A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The target principal name is incorrect.) (Microsoft SQL Server, Error: -2146893022)

Auffällig ist, dass, wenn ich Erzwingen der Verschlüsselung als Ja auf SQL Server Configuration Manager auswählen und ich wähle nicht Encrypt Verbindung auf Microsoft SQL Server Management Studio I mit der Datenbank verbinden kann. Wenn ich die Abfrage ausführen:

select * from sys.dm_exec_connections 

Tatsächlich ist die Spalte encrypt_option TRUE ist.

Das Zertifikat wurde mit Openssl erzeugt und dies ist die Information:

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 
     ... 

Die aktuellen OS 10 Windows Home.

Was ich vermisse?

+0

Ich habe dieses Problem auch. Ähnliche Situation. Zertifikat in OpenSSL erstellt (vielleicht falsch). Unterschiede: SQL Server 2014 Developer Edition, Windows 7. –

+0

Im Übrigen werden hier die Unterschiede zwischen "Verschlüsselung erzwingen" auf Server und "Verschlüsselung erzwingen" auf Client und "Verbindung verschlüsseln" in SSMS beschrieben: https://social.msdn.microsoft. com/Foren/sqlserver/de-DE/bde679d9-ff83-4fa7-b402-42e336a97106/force-verschlüsselung-auf-sql-server-nicht funktioniert? forum = sqlsecurity –

Antwort

1

Das mit OpenSSL generierte Zertifikat funktioniert ordnungsgemäß.In meinem Fall ist das Problem Rechte des Kontos war, unter dem MSSQL über das Zertifikat läuft, löste ich dieses Problem mit den Folgeschritten:

  • öffnen SQL Server Configuration Manager.
  • Suchen Sie das Konto, das zum Ausführen von MSSQL-Instanz verwendet wird (Anmelden Registerkarte auf MSSQL-Instanz Eigenschaften).
  • Öffnen Sie MMC Konsole und fügen Sie hinzu Zertifikate (Local Machine) Snap-In.
  • Durchsuchen Sie den Zertifikatsspeicher, klicken Sie mit der rechten Maustaste auf das Zertifikat und wählen Sie Alle Aufgaben ->Private Schlüssel verwalten ....
  • Setzen Sie die Berechtigungen auf dasselbe Konto, unter dem MSSQL ausgeführt wird.
3

Ich habe diesen Fehler erhalten, wenn ich etwas ähnliches gemacht habe. Ich habe auch ein Zertifikat von OpenSSL erstellt und es in SQL Server importiert. Ich habe auch SQL Server Management Studio verwendet, um zu überprüfen, ob die clientseitige Kopie des Zertifikats erforderlich war. Als ich das tat, bekam ich den oben beschriebenen Fehler.

Die Lösung war, dass einfach im Fenster war ich nicht mit dem CN zu verbinden, die auf dem Zertifikat ist:

enter image description here

statt 127.0.0.1 (oder was auch immer Sie es haben) verschiebe die CN auf dem Zertifikat und diese Verbindung sollte funktionieren.

+0

dankbar für Ihre Zeit, schlagen Sie mir die Verwendung von IP-Adresse anstelle des allgemeinen Namens?, Weil ich die alternative IP auf Zertifikat einstelle. – Joseph

+0

Sie möchten, dass das CN des Zertifikats mit der Adresse übereinstimmt, mit der Sie sich mit dem Server verbinden. Sie können dies tun, indem Sie das Zertifikat ändern, indem Sie die Verbindungsadresse ändern oder beides. –

+0

Interessanterweise war der allgemeine Name (CN) nicht der Servername, den ich verwenden musste. Stattdessen der vollqualifizierte Domänenname (FQDN), der im Attribut "Alternative Namen für Antragsteller" enthalten war. –

1

Ich hatte das gleiche Problem und wurde behoben, indem TrustServerCertificate=True; der Verbindungszeichenfolge hinzugefügt wurde.

+2

Das ist in der Produktion in der Regel nicht sicher. –

Verwandte Themen