Grundlegendes zur SSL-Unterstützung
Wenn die Anwendung beim Herstellen einer Verbindung mit SQL Server Verschlüsselung anfordert und die SQL Server-Instanz für die Unterstützung von SSL-Verschlüsselung konfiguriert ist, initialisiert Microsoft SQL Server 2005 JDBC Driver den SSL-Handshake. Mithilfe des Handshakes können der Server und der Client die Verschlüsselungs- und Kryptografiealgorithmen aushandeln, mit denen Daten geschützt werden sollen. Nachdem der SSL-Handshake abgeschlossen wurde, können der Client und der Server die verschlüsselten Daten sicher senden. Während des SSL-Handshakes sendet der Server sein Zertifikat für öffentliche Schlüssel an den Client. Der Aussteller eines Zertifikats für öffentliche Schlüssel wird als Zertifizierungsstelle bezeichnet. Der Client ist verantwortlich dafür zu überprüfen, ob der Client der Zertifizierungsstelle vertraut.
Wenn die Anwendung keine Verschlüsselung anfordert, erzwingt Microsoft SQL Server 2005 JDBC Driver keine Unterstützung der SSL-Verschlüsselung von SQL Server. Wenn die SQL Server-Instanz nicht für das Erzwingen der SSL-Verschlüsselung konfiguriert ist, wird eine Verbindung ohne Verschlüsselung hergestellt. Falls die SQL Server-Instanz für das Erzwingen der SSL-Verschlüsselung konfiguriert ist, aktiviert der Treiber automatisch die SSL-Verschlüsselung, wenn er auf einer ordnungsgemäß konfigurierten Java Virtual Machine (JVM) ausgeführt wird. Andernfalls wird die Verbindung getrennt, und der Treiber löst einen Fehler aus.
Hinweis
Weitere Informationen zum Konfigurieren von SSL für SQL Server finden Sie im Thema zum Verschlüsseln von Verbindungen zu SQL Server in der SQL Server 2005-Onlinedokumentation.
Damit Anwendungen die SSL-Verschlüsselung verwenden können, stellt Microsoft SQL Server 2005 JDBC Driver Version 1.2 die folgenden Verbindungseigenschaften bereit: encrypt, trustServerCertificate, trustStore, trustStorePassword und hostNameInCertificate. Weitere Informationen finden Sie unter Festlegen von Verbindungseigenschaften.
In der folgenden Tabelle wird das Verhalten von Microsoft SQL Server 2005 JDBC Driver Version 1.2 in möglichen SSL-Verbindungsszenarien zusammengefasst. In jedem Szenario wird ein anderer Satz von SSL-Verbindungseigenschaften verwendet. Die Tabelle schließt Folgendes ein:
blank: "Die Eigenschaft ist in der Verbindungszeichenfolge nicht enthalten."
value: "Die Eigenschaft ist in der Verbindungszeichenfolge vorhanden, und ihr Wert ist gültig."
any: "Es ist nicht ausschlaggebend, ob die Eigenschaft in der Verbindungszeichenfolge vorhanden oder ihr Wert gültig ist."
Hinweis
Das gleiche Verhalten trifft auf die SQL Server-Benutzerauthentifizierung und die integrierte Windows-Authentifizierung zu.
encrypt
trustServerCertificate
hostNameInCertificate
trustStore
trustStorePassword
Verhalten
false oder blank
any
any
any
any
Microsoft SQL Server 2005 JDBC Driver erzwingt nicht, dass SQL Server SSL-Verschlüsselung unterstützt. Wenn der Server ein selbst signiertes Zertifikat aufweist, initiiert der Treiber den SSL-Zertifikataustausch. Das SSL-Zertifikat wird nicht überprüft, und nur die Anmeldeinformationen (im Anmeldepaket) werden verschlüsselt.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch. Das SSL-Zertifikat wird nicht überprüft, die gesamte Kommunikation wird jedoch verschlüsselt.
Hinweis:
Bei einigen JVMs der Version 1.4 verschlüsselt der JDBC-Treiber möglicherweise die Anmeldeinformationen nicht. Sie sollten wenn möglich eine neuere Version der JVM verwenden.
true
true
any
any
any
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch. Wenn die trustServerCertificate-Eigenschaft auf "true" festgelegt ist, überprüft der Treiber das SSL-Zertifikat nicht.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
blank
blank
blank
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber verwendet die in der Verbindungs-URL angegebene serverName-Eigenschaft, um das SSL-Zertifikat des Servers zu überprüfen. Außerdem werden die Suchregeln der Trust-Manager-Factory verwendet, um den zu verwendenden Zertifikatspeicher zu ermitteln.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
value
blank
blank
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber überprüft den Subject-Wert des SSL-Zertifikats mithilfe des für die hostNameInCertificate-Eigenschaft angegebenen Werts.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
blank
value
value
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber verwendet den trustStore-Eigenschaftswert zum Ermitteln der Zertifikatdatei trustStore und den trustStorePassword-Eigenschaftswert zum Überprüfen der Integrität der Datei trustStore.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
blank
blank
value
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber verwendet den trustStorePassword-Eigenschaftswert zum Überprüfen der Integrität der Standarddatei trustStore.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
blank
value
blank
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber verwendet den trustStore-Eigenschaftswert, um den Speicherort der Datei trustStore zu ermitteln.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
value
blank
value
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber verwendet den trustStorePassword-Eigenschaftswert zum Überprüfen der Integrität der Standarddatei trustStore. Außerdem verwendet der Treiber den hostNameInCertificate-Eigenschaftswert, um das SSL-Zertifikat zu überprüfen.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
value
value
blank
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber verwendet den trustStore-Eigenschaftswert, um den Speicherort der Datei trustStore zu ermitteln. Außerdem verwendet der Treiber den hostNameInCertificate-Eigenschaftswert, um das SSL-Zertifikat zu überprüfen.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
true
false oder blank
value
value
value
Microsoft SQL Server 2005 JDBC Driver fordert die Verwendung der SSL-Verschlüsselung mit SQL Server an.
Wenn der Server erfordert, dass der Client SSL-Verschlüsselung unterstützt oder der Server die Verschlüsselung unterstützt, initiiert der Treiber den SSL-Zertifikataustausch.
Der Treiber verwendet den trustStore-Eigenschaftswert zum Ermitteln der Zertifikatdatei trustStore und den trustStorePassword-Eigenschaftswert zum Überprüfen der Integrität der Datei trustStore. Außerdem verwendet der Treiber den hostNameInCertificate-Eigenschaftswert, um das SSL-Zertifikat zu überprüfen.
Wenn der Server nicht für die Unterstützung der Verschlüsselung konfiguriert ist, löst der Treiber einen Fehler aus und trennt die Verbindung.
Wenn die Eigenschaft encrypt auf true festgelegt ist, verwendet Microsoft SQL Server 2005 JDBC Driver den JSSE-Standardsicherheitsanbieter der JVM zum Aushandeln der SSL-Verschlüsselung mit SQL Server. Der Standardsicherheitsanbieter unterstützt möglicherweise nicht alle erforderlichen Features zum erfolgreichen Aushandeln der SSL-Verschlüsselung. Der Standardsicherheitsanbieter könnte beispielsweise die im SSL-Zertifikat für SQL Server verwendete Größe des öffentlichen RSA-Schlüssels nicht unterstützen. In diesem Fall löst der Standardsicherheitsanbieter möglicherweise einen Fehler aus, wodurch der JDBC-Treiber die Verbindung trennt. Führen Sie zum Beheben dieses Problems eine der folgenden Aktionen aus:
Konfigurieren Sie SQL Server mit einem Serverzertifikat mit einem kleineren öffentlichen RSA-Schlüssel
Konfigurieren Sie die JVM für die Verwendung eines anderen JSSE-Sicherheitsanbieters in der Sicherheitseigenschaftendatei "<java-home>/lib/security/java.security"
Verwenden Sie eine andere JVM
Überprüfen des SSL-Serverzertifikats
Während des SSL-Handshakes sendet der Server sein Zertifikat für öffentliche Schlüssel an den Client. Der JDBC-Treiber oder Client muss überprüfen, ob das Serverzertifikat von einer Zertifizierungsstelle herausgegeben wurde, der der Client vertraut. Der Treiber erfordert, dass das Serverzertifikat die folgenden Bedingungen erfüllt:
Das Zertifikat wurde von einer vertrauenswürdigen Zertifizierungsstelle ausgegeben.
Das Zertifikat muss für die Serverauthentifizierung vorgesehen sein.
Das Zertifikat ist nicht abgelaufen.
Die Eigenschaft subject des Zertifikats gibt an, dass der allgemeine Name (Common Name, CN) mit dem in der Verbindungszeichenfolge angegebenen Servernamen oder, falls angegeben, mit dem hostNameInCertificate-Eigenschaftswert beginnt. Wenn es sich bei dem Servernamen um eine IP-Adresse handelt, überprüft der Treiber, ob der CN-Wert mit der IP-Adresse beginnt.
Siehe auch
Konzepte
Verwenden der SSL-Verschlüsselung