sql >> Databáze >  >> RDS >> Oracle

Oracle Database TLS1.2 / SSL připojení pomocí JDBC thin a JKS

Zde jsou kroky ke konfiguraci tenkého ovladače Oracle JDBC pro připojení k databázi pomocí TLS v1.2 (za předpokladu, že konfigurace databáze je správná).

Krok 1:Použijte opravu chyby 19030178 (od verze 12.2.0.1 není potřeba)

Budete muset použít opravu pro chybu 19030178, která umožňuje TLSv1.2. Všimněte si, že oprava umožňuje TLSv1.2, ale ve výchozím nastavení jej nepovoluje. Takže s opraveným ovladačem 12.1.0.2 musíte také nastavit oracle.net.ssl_version='1.2'. Tuto vlastnost lze nastavit buď jako systémovou vlastnost (pomocí -D), nebo prostřednictvím vlastností zdroje dat.

Krok 2:Nainstalujte soubory JCE

Bez souborů Java Cryptography Extension (JCE) nebudou silné šifrovací sady (například TLS_RSA_WITH_AES_256_CBC_SHA256) povoleny. Ať už tedy používáte JDK7 nebo JDK8, měli byste nainstalovat JCE Unlimited Strength Jurisdiction Policy Files. Tyto soubory lze nalézt na webu Oracle.

Krok 3:Vždy používejte nejnovější aktualizaci JDK

Ujistěte se, že používáte nejnovější aktualizaci JDK7 nebo JDK8, protože byly opraveny chyby, které jsou vyžadovány pro TLSv1.2.

Krok 4:Místo peněženek použijte soubory JKS

Vypadá to, že jste to již udělali, ale jen pro ostatní, aby to viděli:peněženky se složitě konfigurují a používají s tenkým ovladačem Oracle JDBC, protože vyžadují další nádoby a další vlastnosti. Na druhou stranu soubory JKS jsou v JRE nativně podporovány a podle mých zkušeností vždy fungovaly dobře.

Krok 5:Při použití JDK7 explicitně povolte silné šifrovací sady

Tento krok není vyžadován při použití JDK8. Pokud s JDK7 používáte silnou šifrovací sadu, jako je TLS_RSA_WITH_AES_256_CBC_SHA256, musíte ji povolit prostřednictvím vlastnosti připojení oracle.net.ssl_cipher_suites.

Krok 6:Ladění pomocí -Djavax.net.debug=all

Nakonec, pokud narazíte na další problémy, můžete zapnout sledování a zjistit, co se děje, pomocí -Djavax.net.debug=all.

====PŘÍKLAD S JDK7 A 12.1.0.2 OPRAVENÝ TENKÝ OVLADAČ =====

java  -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_cipher_suites='(TLS_RSA_WITH_AES_256_CBC_SHA256)' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1'  JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'

====PŘÍKLAD S JDK8 A 12.1.0.2 OPRAVENÝ TENKÝ OVLADAČ =====

java -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1'  JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'



  1. Jak získat čas z řetězce v MySQL

  2. Multi-DC PostgreSQL:Nastavení pohotovostního uzlu v jiné geografické poloze přes VPN

  3. Rozdíly mezi utf8 a latin1

  4. Použití SQLCipher s Androidem