Ich muss SSL für Übertragungen zwischen meiner Anwendung und SQL Server 2008 implementieren.
Ich verwende Windows 7, SQL Server 2008 und SQL Server Management Studio und meine Anwendung ist in c # geschrieben.
Ich habe versucht, der MSDN-Seite zum Erstellen von Zertifikaten zu folgen, und dies unter "Encrpyt für einen bestimmten Client", aber ich war hoffnungslos verwirrt. Ich brauche ein paar kleine Schritte, um die Verschlüsselung erfolgreich zu implementieren.
Erstens verstehe ich MMC nicht. Ich sehe dort viele Zertifikate ... sind dies Zertifikate, die ich für meine eigene Verschlüsselung verwenden sollte, oder werden diese für Dinge verwendet, die bereits existieren? Ich gehe davon aus, dass sich alle diese Zertifikate auf meinem lokalen Computer befinden. Warum gibt es also einen Ordner mit dem Namen "Persönlich"?
Zweitens habe ich ein kleines Experiment mit einer selbstsignierten Baugruppe durchgeführt, um das oben genannte Problem zu vermeiden. Wie im obigen MSDN-Link gezeigt, habe ich in SSMS ausgeführtes SQL verwendet, um ein selbstsigniertes Zertifikat zu erstellen. Dann habe ich die folgende Verbindungszeichenfolge verwendet, um eine Verbindung herzustellen:
Data Source=myServer;Initial Catalog=myDatabase;User ID=myUser;Password=myPassword;Encrypt=True;TrustServerCertificate=True
Es hat verbunden, funktioniert. Dann habe ich das soeben erstellte Zertifikat gelöscht und es hat immer noch funktioniert. Offensichtlich hat es nie etwas getan, aber warum nicht? Wie würde ich sagen, ob es tatsächlich "funktioniert"? Ich glaube, ich vermisse möglicherweise einen Zwischenschritt, um (irgendwie?) Die Datei von SSMS auf den Client zu bringen.
Ich weiß nicht im geringsten, was ich tue, daher sind jede Hilfe, jeder Rat, jeder Kommentar und jede Referenz, die Sie mir geben können, sehr willkommen.
Vielen Dank im Voraus. :) :)
"Persönlich" ist ein irreführender Name für den Zertifikatspeicher. Wenn Sie sich in der MMC befinden und ein Zertifikat sehen, das ausgewählt werden kann, sind Sie wahrscheinlich in Ordnung. Ich empfehle die Verwendung eines echten Zertifikats. Dies kann ein Zertifikat sein, das intern mit Microsoft Certificate Server erstellt wurde, oder ein Zertifikat, das von einem Zertifizierungsanbieter erworben wurde. Ich würde kein selbstsigniertes Zertifikat verwenden. Der SQL Server-Instanzdienst muss ebenfalls neu gestartet werden, damit er wirksam wird.
Einige allgemeine Tipps:
Wenn Sie die Verschlüsselung auf dem Client erzwingen, muss die gesamte SQL-Kommunikation auf dem Client die Verschlüsselung auf Transportebene verwenden.
Wenn Sie die Verschlüsselung auf dem Server erzwingen, muss die gesamte SQL-Kommunikation für diese Instanz die Verschlüsselung auf Transportebene verwenden.
Unabhängig von der von Ihnen gewählten Konfiguration (selektiv oder erzwungen) benötigt Ihre Anwendung weiterhin Unterstützung für die verschiedenen Verbindungsoptionen. Wie das Schlüsselwort "Verbindung verschlüsseln".
Ich persönlich habe festgestellt, dass der SQL Native-Client aussagekräftigere Fehlermeldungen enthält als der integrierte SQL-Client, aber Sie können die Verschlüsselung mit beiden verwenden / erzwingen.
Die Dokumentation von Microsoft ist etwas lückenhaft, aber es gibt ein paar gute Artikel:
Selektive Verwendung einer sicheren Verbindung zu SQL Server
http://blogs.msdn.com/b/sql_protocols/archive/2009/10/19/selectively-using-secure-connection-to-sql-server.aspx
So aktivieren Sie die SSL-Verschlüsselung für eine Instanz von SQL Server mithilfe der Microsoft Management Console
http://support.microsoft.com/kb/316898
Verwenden von Verbindungszeichenfolgenschlüsselwörtern mit SQL Server Native Client
http://msdn.microsoft.com/en-us/library/ms130822.aspx
quelle