Kann ein Benutzer das Verbindungszertifikat für eine SQL Server-Instanz abrufen (ähnlich wie jemand ein HTTP-Zertifikat abrufen kann)? Wenn das so ist, wie?
Kontext
Wenn der SQL Server-Client eine Verschlüsselung anfordert, muss das Serverzertifikat überprüft werden, bevor eine verschlüsselte Verbindung zugelassen wird. Entwicklungsserver werden häufig mit selbstsignierten Zertifikaten konfiguriert, die beim Standard-Client-Setup nicht überprüft werden.
So verwenden Sie ein selbstsigniertes Zertifikat zum Verschlüsseln einer Verbindung:
- Das Zertifikat muss dem lokalen Geschäft hinzugefügt werden
- Der Client muss festlegen
"TrustServerCertificate=true"
- der Kunde muss nicht verlangen , Verschlüsselung und der Server muss festgelegt
"ForceEncryption"
zu"yes"
.
Die beiden letztgenannten Optionen stehen MitM-Angriffen jedes Mal offen, wenn eine Verbindung hergestellt wird. Beim zweiten Mal speichern einige Clients die Verbindungseinstellung nicht, daher muss sie für jede neue Verbindung neu festgelegt werden. Daher ist die wünschenswerteste Lösung das Hinzufügen des Zertifikats zum lokalen Geschäft (es erfordert zunächst etwas mehr Arbeit, ist danach jedoch die einfachste und sicherste Option). Für Benutzer in einer Domäne ist das Zertifikat leicht zu verteilen, andernfalls muss das Zertifikat manuell auf jedem Computer installiert werden. Ein Administrator kann das Zertifikat jedem Benutzer bereitstellen, indem er es entweder direkt sendet oder als Netzwerkressource zur Verfügung stellt. Manchmal ist der Administrator jedoch aus anderen Gründen zu beschäftigt oder reagiert nicht, um das Zertifikat bereitzustellen.
In einem solchen Fall wäre es nützlich, wenn der Benutzer das Zertifikat direkt vom SQL Server erhalten könnte, genauso wie ein Zertifikat mit einem Browser oder von einem HTTP-Server abgerufen werden kann openssl s_client
. Dies wäre beim Abrufen des Zertifikats immer noch anfällig für einen MitM-Angriff, bietet jedoch ein viel engeres Fenster als das Vertrauen in das Zertifikat bei jeder neuen Verbindung.