Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Při připojování k SQL Serveru, pokud aplikace požaduje šifrování a instance SQL Serveru je nakonfigurovaná tak, aby podporovala šifrování TLS, ovladač Microsoft JDBC pro SQL Server zahájí metodu handshake protokolu TLS. Metoda handshake umožňuje serveru a klientovi vyjednat šifrování a kryptografické algoritmy k ochraně dat. Po dokončení metody handshake protokolu TLS může klient a server bezpečně odesílat šifrovaná data. Během metody handshake protokolu TLS server odešle klientovi certifikát veřejného klíče. Vystavitel certifikátu veřejného klíče se označuje jako certifikační autorita (CA). Klient zodpovídá za ověření, že certifikační autorita je jedním z důvěryhodných klientů.
Pokud aplikace nepožaduje šifrování, ovladač Microsoft JDBC pro SQL Server nebude vynutit, aby SQL Server podporoval šifrování TLS. Pokud není instance SQL Serveru nakonfigurovaná tak, aby vynutila šifrování TLS, vytvoří se připojení bez šifrování. Pokud je instance SQL Serveru nakonfigurovaná tak, aby vynutila šifrování TLS, ovladač automaticky povolí šifrování TLS při spuštění na správně nakonfigurovaném virtuálním počítači Java (JVM) nebo jinak se připojení ukončí a ovladač vyvolá chybu.
Poznámka:
Ujistěte se, že hodnota předaná názvu serveru přesně odpovídá názvu běžného názvu (CN) nebo názvu DNS v alternativním názvu subjektu (SAN) v certifikátu serveru, aby bylo připojení TLS úspěšné.
Další informace o konfiguraci protokolu TLS pro SQL Server naleznete v tématu Povolení šifrovaných připojení k databázovému stroji.
Poznámky
Aby mohly aplikace používat šifrování TLS, ovladač Microsoft JDBC pro SQL Server zavedl následující vlastnosti připojení počínaje verzí 1.2: encrypt, trustServerCertificate, trustStore, trustStorePassword a hostNameInCertificate. Aby ovladač mohl používat TDS 8.0 s šifrováním TLS, zavedl se od verze 11.2 server vlastností připojení. Další informace naleznete v tématu Nastavení vlastností připojení.
Následující tabulka shrnuje, jak se ovladač Microsoft JDBC pro verzi SQL Serveru chová pro možné scénáře připojení TLS. Každý scénář používá jinou sadu vlastností připojení TLS. Tabulka obsahuje:
- blank: Vlastnost v připojovacím řetězci neexistuje.
- value: "Vlastnost existuje v připojovacím řetězci a její hodnota je platná"
- any: "Nezáleží na tom, zda vlastnost existuje v připojovacím řetězci nebo její hodnota je platná"
Poznámka:
Stejné chování platí pro ověřování uživatelů SQL Serveru a integrované ověřování Systému Windows.
| Nastavení vlastností | Chování |
|---|---|
|
encrypt = false nebo blank trustServerCertificate = any hostNameInCertificate = any trustStore = libovolný trustStorePassword = libovolný |
Ovladač nebude vynucovat, aby server podporoval šifrování TLS. Pokud má server certifikát podepsaný svým držitelem, ovladač zahájí výměnu certifikátů TLS. Certifikát TLS se neověří a zašifrují se jenom přihlašovací údaje (v přihlašovacím paketu). Pokud server vyžaduje, aby klient podporoval šifrování TLS, ovladač zahájí výměnu certifikátů TLS. Certifikát TLS se neověří, ale veškerá komunikace se zašifruje. |
|
encrypt = true trustServerCertificate = true hostNameInCertificate = any trustStore = libovolný trustStorePassword = libovolný |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Pokud je vlastnost trustServerCertificate nastavená na true, ovladač neověří certifikát TLS. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = prázdné trustStore = prázdné trustStorePassword = prázdné |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač použije vlastnost serverName zadanou na adrese URL připojení k ověření certifikátu TLS serveru a spoléhá na vyhledávací pravidla objektu správce důvěryhodnosti k určení úložiště certifikátů, které se má použít. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = hodnota trustStore = prázdné trustStorePassword = prázdné |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač ověří hodnotu subjektu certifikátu TLS pomocí hodnoty zadané pro vlastnost hostNameInCertificate . Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = prázdné trustStore = hodnota trustStorePassword = hodnota |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač použije hodnotu vlastnosti trustStore k vyhledání souboru trustStore a hodnoty vlastnosti trustStorePassword pro kontrolu integrity souboru trustStore. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = prázdné trustStore = prázdné trustStorePassword = hodnota |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač použije hodnotu vlastnosti trustStorePassword ke kontrole integrity výchozího souboru trustStore. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = prázdné trustStore = hodnota trustStorePassword = prázdné |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač použije hodnotu vlastnosti trustStore k vyhledání umístění souboru trustStore. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = hodnota trustStore = prázdné trustStorePassword = hodnota |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač použije hodnotu vlastnosti trustStorePassword ke kontrole integrity výchozího souboru trustStore. Ovladač také použije hodnotu vlastnosti hostNameInCertificate k ověření certifikátu TLS. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = hodnota trustStore = hodnota trustStorePassword = prázdné |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač použije hodnotu vlastnosti trustStore k vyhledání umístění souboru trustStore. Ovladač také použije hodnotu vlastnosti hostNameInCertificate k ověření certifikátu TLS. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = true trustServerCertificate = false nebo blank hostNameInCertificate = hodnota trustStore = hodnota trustStorePassword = hodnota |
Požadavky ovladačů na použití šifrování TLS se serverem. Pokud server vyžaduje, aby klient podporoval šifrování TLS nebo pokud server podporuje šifrování, ovladač zahájí výměnu certifikátů TLS. Ovladač použije hodnotu vlastnosti trustStore k vyhledání souboru trustStore a hodnoty vlastnosti trustStorePassword pro kontrolu integrity souboru trustStore. Ovladač také použije hodnotu vlastnosti hostNameInCertificate k ověření certifikátu TLS. Pokud server není nakonfigurovaný tak, aby podporoval šifrování, ovladač vyvolá chybu a ukončí připojení. |
|
encrypt = strict hostNameInCertificate = hodnota trustStore = prázdné trustStorePassword = prázdné serverCertificate = hodnota |
Požadavky ovladačů na použití šifrování TLS TDS 8.0 strict se serverem.Ovladač zahájí metodu handshake protokolu TLS a výměnu certifikátů se serverem jako první akci. Nastavení trustServerCertificate se ignoruje a považuje se za false v strict režimu.Ovladač použije volitelné vlastnosti hostNameInCertificate nebo serverCertificate k ověření certifikátu TLS serveru. Pokud server není nakonfigurovaný tak, aby podporoval připojení TDS 8.0, ovladač vyvolá chybu a ukončí připojení. |
Pokud je vlastnost encrypt nastavena na true, ovladač Microsoft JDBC pro SQL Server používá výchozího zprostředkovatele zabezpečení JSSE JSSE k vyjednávání šifrování TLS s SQL Serverem. Výchozí zprostředkovatel zabezpečení nemusí podporovat všechny funkce potřebné k úspěšnému vyjednání šifrování TLS. Výchozí zprostředkovatel zabezpečení například nemusí podporovat velikost veřejného klíče RSA použitého v certifikátu TLS SQL Serveru. V tomto případě může výchozí poskytovatel zabezpečení vyvolat chybu, která způsobí ukončení připojení ovladače JDBC. Pokud chcete tento problém vyřešit, můžete použít jednu z následujících možností:
- Konfigurace SQL Serveru s certifikátem serveru, který má menší veřejný klíč RSA
- Nakonfigurujte prostředí JVM tak, aby používalo jiného zprostředkovatele zabezpečení JSSE v< souboru vlastností zabezpečení java-home>/lib/security/java.security.
- Použití jiného prostředí JVM
Ověřování certifikátu TLS serveru
Během metody handshake protokolu TLS server odešle klientovi certifikát veřejného klíče. Ovladač JDBC nebo klient musí ověřit, že certifikát serveru vydává certifikační autorita, které klient důvěřuje. Ovladač vyžaduje, aby certifikát serveru splňoval následující podmínky:
- Certifikát vydal důvěryhodná certifikační autorita.
- Certifikát musí být vystaven pro ověření serveru.
- Platnost certifikátu nevypršela.
- Běžný název (CN) v předmětu nebo názvu DNS v alternativním názvu subjektu (SAN) certifikátu přesně odpovídá hodnotě serverName zadané v připojovacím řetězci nebo pokud je zadána hodnota vlastnosti hostNameInCertificate .
- Název DNS může obsahovat zástupné znaky. Předchozí verze 7.2 nepodporuje porovnávání zástupných znaků ovladač Microsoft JDBC pro SQL Server. To znamená, že abc.com nebude odpovídat *.com, ale *.com bude odpovídat *.com. U verze 7.2 a novější se podporuje porovnávání se zástupnými štíteky standardního certifikátu.
Pro použití TDS 8.0 s šifrováním strict poskytuje hodnota vlastnosti serverCertificate cestu k certifikátu serveru, který se má použít pro ověření certifikátu serveru. Tento soubor musí používat formát souboru PEM. Certifikát přijatý ze serveru musí přesně odpovídat tomuto certifikátu.