Wie kann der Client das öffentliche SQL Server-SSL-Zertifikat abrufen?

8

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.

outis
quelle
hi outis und @Abacus haben Sie das alle gelöst oder mehr Details zum Abrufen / Überprüfen des SQL-Zertifikats vom Client erhalten?
TiloBunt
1
hier Q von stackoverflow.com/q/34981859/1747983
TiloBunt

Antworten:

1

Technisch ist es möglich, dass sowohl TDS als auch TLS / SSL dokumentiert sind. Aber Sie stellen die falsche Frage.

Es macht keinen Sinn, ein selbstsigniertes Zertifikat überall wohl oder übel manuell zu installieren, es bringt Ihnen nichts. Sie werden das MitM-Zertifikat nur überall installieren ...

Konzentrieren Sie sich auf die Bereitstellung einer ordnungsgemäß konfigurierten PKI-Infrastruktur. Verwenden Sie entweder ein vertrauenswürdiges Zertifikat (z. B. Verisign et al.) Oder installieren Sie eine PKI-Vertrauensstellung in Ihrem Netzwerk und verwenden Sie ein infrastruktursigniertes Zertifikat.

Siehe diese Reihe: Entwerfen und Implementieren einer PKI

Remus Rusanu
quelle
8
Ich bin anderer Meinung - es gibt einen sehr guten Zweck, ein Zertifikat eines SQL-Servers manuell abzurufen, nämlich es anzusehen. In meinem Fall möchte ich sehen, welche Domain (s) darin enthalten sind, und habe keine einfache Möglichkeit (die ich kenne), das Zertifikat einfach vom Server abzurufen. Alle gängigen Browser bieten Ihnen dieses einfache und nützliche Tool. Wenn es nicht nützlich wäre, würden Browser es auch nicht haben.
Abacus