SSL-Verbindung zur Datenbank
Meiner Anwendung benötigen, um eine sichere Verbindung mit SQL Server 2008. Mit aktiviertem "Force Encryption" im server-Seite die folgende Verbindungszeichenfolge aus meiner C# - Anwendung.
Initial Catalog=emp_test;Persist Security Info=True;User ID=sa;Password=***;Data Source=172.21.70.94;Provider=SQLOLEDB;Use Encryption for Data=True;Trust Server Certificate=True;
Habe ich keine Bestimmung, die ein Zertifikat in server - Daher gab ich Vertrauen Server Certificate=True ist, so dass selbst signierte server-Zertifikat wird nicht validiert.
Aber die Verbindung wird nicht hergestellt mit folgenden Fehler.
Datenbank-Fehler: [DBNETLIB][ConnectionOpen CreateFile (SECDoClientHandshake()).]SSL Sicherheitsfehler.
Ohne die beiden Attribute beziehen sich auf Sicherheit, es funktioniert gut.
Was muss ich ändern damit dies funktioniert?
- Können Sie versuchen, diese für mich?
Initial Catalog=emp_test;Persist Security Info=True;User ID=sa;Password=***;Data Source=172.21.70.94;Provider=SQLOLEDB;Encrypt=yes;
- Hey BigM, Wenn ich Encrypt=ja, Verbindung wird aufgebaut, die ich denke, sollte das nicht passieren, ohne Angabe TrustServerCertificate. Daher fand nie, dass das Attribut in account.
- Bitte verweisen Sie in diesem post (stackoverflow.com/questions/3674160/...), die deutlich zeigt, dass
Encrypt = yes
das Zertifikat verwendet. - Laut einer Antwort auf diesen Beitrag können Sie auch hinzufügen
TrustServerCertificate=True
um die Verbindung Zeichenfolge, so dass es anschließen zu können, unabhängig von der cert. - Laut diesem MSDN-post - link, ich bin mit einer Initialisierungs-string mit IDataInitialize ich muss das Attribut Verwendung der Daten für die Verschlüsselung anstelle von Verschlüsseln. Ebenso muss ich mit Trust-Server-Zertifikat anstelle von TrustServerCertificate.
- gibt es einen guten Grund, Sie sind nicht mit den
SqlConnection
Objekt? - Basierend auf Benutzer-db-Typ (mssql oder oracle) ich konstruiere Verbindungszeichenfolge und die Verbindung unter Verwendung von Oledb.
- Bitte gehen Sie durch diese, es hat die komplette Erklärung. Herstellen der DB-Verbindung mithilfe von Microsoft OLE DB-provider und SQL Native OLE DB-provider
- Bitte gehen Sie durch die Frage vor: Herstellen der DB-Verbindung mithilfe von Microsoft OLE DB-provider und SQL Native OLE DB-provider
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mithilfe der
SqlConnection
Objekt bietet Ihnen zwei Vorteile. Ersten, können Sie sicherstellen, dass der connection-string wird korrekt erstellt, da können Sie dieSqlConnectionStringBuilder
Klasse zu bauen. Zweitens, es ist viel schneller als OLEDB.Bauen diese Verbindungszeichenfolge ...
... mit der
SqlConnectionStringBuilder
schreiben Sie code wie diesen ...... die
Encrypt
Eigenschaft enthält diese definition in die .NET Framework ...... die
TrustServerCertificate
Eigenschaft enthält diese definition in die .NET Framework ...Also ich würde sagen, das ist der sicherste Weg. Sie können sicherstellen, dass die .NET Framework wird zum erstellen einer Verbindungszeichenfolge richtig und können Sie sich einen guten Satz von Definitionen, die Umgebung, das, was diese Eigenschaften bedeuten in Bezug auf die Zertifikate basierend auf Ihren Definitionen.
Nun, da Sie eine Verbindung zu Oracle zu, der beste Ansatz wäre da, um weiter zu bauen, eine OLEDB-Verbindung, weil Sie nicht viel von einer Wahl. Aber beide verbindungen sind eine
IDbConnection
und so müssen Sie nur noch eine Fabrik baut, dass die richtige Verbindung und gibt einIDbConnection
.Dies bedeutet, dass Sie erhalten das beste aus beiden Welten, die Leistung und die Leichtigkeit des
SqlConnection
Objekt und der Abstraktion derIDbConnection
so, dass der code nicht zu ändern.