Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Exemplen i den här artikeln beskriver hur du använder egenskaper för anslutningssträngar som gör att program kan använda TLS-kryptering (Transport Layer Security) i ett Java-program. Mer information om dessa nya egenskaper för anslutningssträngar som kryptering, trustServerCertificate, trustStore, trustStorePassword och hostNameInCertificate finns i Ange anslutningsegenskaper.
Konfigurera anslutningen
När egenskapen encrypt är inställd på true och egenskapen trustServerCertificate har angetts till true verifierar inte Microsoft JDBC-drivrutinen för SQL Server SQL Server TLS-certifikatet. Den här inställningen är vanlig för att tillåta anslutningar i testmiljöer, till exempel där SQL Server-instansen bara har ett självsignerat certifikat.
Följande kodexempel visar hur du anger egenskapen trustServerCertificate i en anslutningssträng:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true;trustServerCertificate=true";
När egenskapen encrypt är inställd på true och egenskapen trustServerCertificate är inställd på false, validerar Microsoft JDBC-drivrutinen för SQL Server SQL Server TLS-certifikatet. Validering av servercertifikatet är en del av TLS-handskakningen och säkerställer att servern är rätt server att ansluta till. För att verifiera servercertifikatet måste förtroendematerialet anges vid anslutningstiden antingen med hjälp av anslutningsegenskaperna trustStore och trustStorePassword explicit eller med hjälp av den underliggande Java Virtual Machine (JVM)s standardförtroendearkiv implicit.
Egenskapen trustStore anger sökvägen (inklusive filnamn) till certifikatet trustStore-filen, som innehåller listan över certifikat som klienten litar på. Egenskapen trustStorePassword anger lösenordet som används för att kontrollera integriteten för trustStore-data. Mer information om hur du använder JVM:s standardförtroendearkiv finns i Konfigurera klienten för kryptering.
Följande kodexempel visar hur du anger egenskaperna trustStore och trustStorePassword i en anslutningssträng:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true; trustServerCertificate=false;" +
"trustStore=storeName;trustStorePassword=storePassword";
JDBC-drivrutinen tillhandahåller en annan egenskap, hostNameInCertificate, som anger serverns värdnamn. Värdet för den här egenskapen måste matcha certifikatets ämnesegenskap.
Följande kodexempel visar hur du använder egenskapen hostNameInCertificate i en anslutningssträng:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true; trustServerCertificate=false;" +
"trustStore=storeName;trustStorePassword=storePassword;" +
"hostNameInCertificate=hostName";
Anmärkning
Du kan också ange värdet för anslutningsegenskaper med hjälp av lämpliga setter-metoder som tillhandahålls av klassen SQLServerDataSource .
Om egenskapen encrypt är true, är egenskapen trustServerCertificatefalse, och om servernamnet i anslutningssträngen inte matchar servernamnet i TLS-certifikatet, utfärdas följande fel: The driver couldn't establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "java.security.cert.CertificateException: Failed to validate the server name in a certificate during Secure Sockets Layer (SSL) initialization.". Med version 7.2 och senare stöder drivrutinen mönstermatchning med jokertecken i den vänstra etiketten för servernamnet i TLS-certifikatet.