Sdílet prostřednictvím


Připojení pomocí šifrování

Stáhnout ovladač JDBC

Příklady v tomto článku popisují, jak používat vlastnosti připojovacího řetězce, které aplikacím umožňují používat šifrování TLS (Transport Layer Security) v aplikaci v Javě. Další informace o těchto nových vlastnostech připojovacího řetězce, jako jsou encrypt, trustServerCertificate, trustStore, trustStorePassword a hostNameInCertificate, naleznete v tématu Nastavení vlastností připojení.

Konfigurace připojení

Pokud je vlastnost encrypt nastavena na hodnotu true a vlastnost trustServerCertificate je nastavena na hodnotu true, ovladač Microsoft JDBC pro SQL Server neověří certifikát TLS SQL Serveru. Toto nastavení je běžné pro povolení připojení v testovacích prostředích, například v případě, že instance SQL Serveru má pouze certifikát podepsaný svým držitelem.

Následující příklad kódu ukazuje, jak nastavit trustServerCertificate vlastnost v připojovacím řetězci:

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

Pokud je vlastnost encrypt nastavena na hodnotu true a vlastnost trustServerCertificate je nastavena na false, ovladač Microsoft JDBC pro SQL Server ověří certifikát TLS SQL Serveru. Ověření certifikátu serveru je součástí metody handshake protokolu TLS a zajišťuje, že server je správný server pro připojení. Pokud chcete ověřit certifikát serveru, musí být důvěryhodné materiály zadány při připojení buď pomocí parametrů připojení trustStore a trustStorePassword, nebo implicitně pomocí výchozího úložiště důvěryhodnosti Java Virtual Machine (JVM).

Vlastnost trustStore určuje cestu (včetně názvu souboru) k souboru trustStore certifikátu, který obsahuje seznam certifikátů, kterým klient důvěřuje. Vlastnost trustStorePassword určuje heslo použité ke kontrole integrity dat trustStore. Další informace o použití výchozího úložiště důvěryhodnosti JVM najdete v tématu Konfigurace klienta pro šifrování.

Následující příklad kódu ukazuje, jak nastavit trustStore a trustStorePassword vlastnosti v připojovacím řetězci:

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

Ovladač JDBC poskytuje další vlastnost hostNameInCertificate, která určuje název hostitele serveru. Hodnota této vlastnosti se musí shodovat s vlastností subjektu certifikátu.

Následující příklad kódu demonstruje použití vlastnosti hostNameInCertificate v připojovacím řetězci:

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

Poznámka:

Případně můžete nastavit hodnotu vlastností připojení pomocí odpovídajících metod setter poskytovaných SQLServerDataSource třídy.

Pokud je vlastnost encryptpravdivá, vlastnost trustServerCertificate je false a název serveru v připojovacím řetězci neodpovídá názvu serveru v certifikátu TLS, bude vydána následující chyba: 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." S verzí 7.2 a novější ovladač podporuje odpovídající vzor zástupných znaků v nejlevějším štítku názvu serveru v certifikátu TLS.