Share via


Herstellen von Verbindungen mit SSL-Verschlüsselung

Ab Version 1.2 sind in Microsoft SQL Server 2005JDBC Driver neue Verbindungseigenschaften und neue getter-Methoden und setter-Methoden enthalten, mit deren Hilfe Anwendungen SSL (Secure Sockets Layer)-Verschlüsselung verwenden können.

In den Beispielen in diesem Thema wird die Verwendung der neuen Eigenschaften von Verbindungszeichenfolgen in einer Java-Anwendung beschrieben. Weitere Informationen zu den neuen Eigenschaften für Verbindungszeichenfolgen (beispielsweise encrypt, trustServerCertificate, trustStore, trustStorePassword und hostNameInCertificate) finden Sie unter Festlegen von Verbindungseigenschaften.

Wenn die encrypt-Eigenschaft auf true festgelegt ist und die trustServerCertificate-Eigenschaft auf true festgelegt ist, überprüft Microsoft SQL Server JDBC Driver das SQL Server-SSL-Zertifikat nicht. Dies ist normalerweise zum Zulassen von Verbindungen in Testumgebungen erforderlich, beispielsweise wenn die SQL Server-Instanz nur über ein selbst signiertes Zertifikat verfügt.

Im folgenden Codebeispiel wird das Festlegen der trustServerCertificate-Eigenschaft in einer Verbindungszeichenfolge veranschaulicht:

String connectionUrl = 
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true;trustServerCertificate=true";

Wenn die encrypt-Eigenschaft auf true festgelegt ist und die trustServerCertificate-Eigenschaft auf false festgelegt ist, überprüft Microsoft SQL Server JDBC Driver das SQL Server-SSL-Zertifikat. Das Überprüfen des Serverzertifikats ist Teil des SSL-Handshakes und stellt sicher, dass es sich bei dem Server tatsächlich um den Server handelt, mit dem eine Verbindung hergestellt werden soll. Zum Überprüfen des Serverzertifikats müssen die Vertrauensinformationen zur Verbindungszeit explizit mithilfe der trustStore-Verbindungseigenschaft und der trustStorePassword-Verbindungseigenschaft oder implizit mithilfe des Standardvertrauensspeichers der zugrunde liegenden Java Virtual Machine (JVM) übermittelt werden.

Die trustStore-Eigenschaft gibt den Pfad (einschließlich des Dateinamens) der trustStore-Zertifikatsdatei an. Diese enthält die Liste der Zertifikate, denen der Client vertraut. Die trustStorePassword-Eigenschaft gibt das Kennwort an, das verwendet wird, um die Integrität der trustStore-Daten zu überprüfen. Weitere Informationen zum Standardvertrauensspeicher der JVM finden Sie unter Konfigurieren des Clients für SSL-Verschlüsselung.

Im folgenden Codebeispiel wird das Festlegen der trustStore-Eigenschaft und der trustStorePassword-Eigenschaft in einer Verbindungszeichenfolge veranschaulicht:

String connectionUrl = 
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true; trustServerCertificate=false;" +
     "trustStore=storeName;trustStorePassword=storePassword";

Der JDBC-Treiber stellt die zusätzliche Eigenschaft hostNameInCertificate bereit, mit der der Hostname des Servers angegeben wird. Der Wert dieser Eigenschaft muss mit der subject-Eigenschaft des Zertifikats übereinstimmen.

Im folgenden Codebeispiel wird das Verwenden der hostNameInCertificate-Eigenschaft in einer Verbindungszeichenfolge veranschaulicht:

String connectionUrl = 
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true; trustServerCertificate=false;" +
     "trustStore=storeName;trustStorePassword=storePassword" +
     "hostNameInCertificate=hostName";

Hinweis

Sie können den Wert von Verbindungseigenschaften auch mithilfe der entsprechenden setter-Methoden festlegen, die von der SQLServerDataSource-Klasse bereitgestellt werden.

Siehe auch

Konzepte

Verwenden der SSL-Verschlüsselung

Andere Ressourcen

Sichern von JDBC-Treiberanwendungen