Muss die Datenbankverbindung von einer C#-Applikation zum SQL-Server verschlüsselt werden, muss der SQL-Server mit einem Zertifikat korrekt konfiguriert sein. Im weiteren müssen im ConnenctionString Parameter konfiguriert werden, damit eine verschlüsselte Verbindung hergestellt wird. Dazu wird der ConnenctionString mit folgenden Parametern versehen:
- encrypt=true SSL Encryption aktivieren.
- trustServerCertificate=false Zertifikat wird validiert. (Bei self-signed Zertifikaten auf „true“ setzen)
Wird nun mit der C#-Applikation eine Verbindung auf den SQL-Server hergestellt, sollte die Verbindung verschlüsselt sein. Wie kann man sich jedoch sicher sein? Eine Möglichkeit ist die Verwendung eines „Sniffers“, wie WireShark, oder aber man prüft dies auf dem SQL-Server selber.
Auf dem SQL-Server kann man folgende SQL-Abfrage absetzen, um alle Verbindungen mit ihren Verschlüsselungsoptionen anzuzeigen:
SELECT session_id,encrypt_option
FROM sys.dm_exec_connections
session_id encrypt_option
----------- ----------------------------------------
73 TRUE
73 TRUE
73 TRUE
75 FALSE
76 FALSE
Bei den Verbindungen mit der SessionId 73 sehen wir, dass die Verschlüsselung aktiviert und verwendet wird. (encryption_option = true)
Nützliche Links
SQL Server SSL Troubleshooting Steps
Connection Properties
TrustServerCertificate Property