sql >> Databasteknik >  >> RDS >> Oracle

Oracle Database TLS1.2 / SSL-anslutning med JDBC thin och JKS

Här är stegen att följa för att konfigurera den tunna Oracle JDBC-drivrutinen för att ansluta till databasen med TLS v1.2 (förutsatt att din databaskonfiguration är korrekt).

Steg 1:Applicera patch för bugg 19030178 (behövs inte från och med 12.2.0.1)

Du måste applicera patchen för bugg 19030178 som tillåter TLSv1.2. Observera att patchen tillåter TLSv1.2 men inte aktiverar den som standard. Så med den 12.1.0.2 patchade drivrutinen måste du också ställa in oracle.net.ssl_version='1.2'. Den här egenskapen kan ställas in antingen som en systemegenskap (med -D) eller via datakällans egenskaper.

Steg 2:Installera JCE-filer

Utan Java Cryptography Extension-filer (JCE) kommer de starka chiffersviterna (till exempel TLS_RSA_WITH_AES_256_CBC_SHA256) inte att vara aktiverade. Så oavsett om du använder JDK7 eller JDK8, bör du installera JCE Unlimited Strength Jurisdiction Policy Files. Dessa filer finns på Oracles webbplats.

Steg 3:Använd alltid den senaste uppdateringen av JDK

Se till att använda den senaste uppdateringen av antingen JDK7 eller JDK8 eftersom buggar har åtgärdats som krävs för TLSv1.2.

Steg 4:Använd JKS-filer istället för plånböcker

Det verkar som att du redan har gjort det men bara för andra att se:plånböcker är komplicerade att konfigurera och använda med Oracle JDBC thin drivrutinen eftersom de kräver extra burkar och extra egenskaper. JKS-filer å andra sidan stöds inbyggt i JRE och, enligt min erfarenhet, har de alltid fungerat bra.

Steg 5:När du använder JDK7, aktivera uttryckligen starka chiffersviter

Detta steg krävs inte när du använder JDK8. Med JDK7, om du använder en stark chiffersvit som TLS_RSA_WITH_AES_256_CBC_SHA256, måste du aktivera den via anslutningsegenskapen oracle.net.ssl_cipher_suites.

Steg 6:Felsök med -Djavax.net.debug=all

Slutligen om du stöter på fler problem kan du aktivera spårning för att ta reda på vad som händer med -Djavax.net.debug=all.

====EXEMPEL MED JDK7 OCH DEN 12.1.0.2 LÄPTADE TUNA DRIVRUTINEN =====

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'

====EXEMPEL MED JDK8 OCH DEN 12.1.0.2 PATCHAD THIN DRIVER =====

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. MySQL lösenordsfunktion

  2. INSERT med dynamiskt tabellnamn i triggerfunktion

  3. Är det möjligt att referera till en kolumn som flera främmande nycklar?

  4. Fördelarna med PostgreSQL