Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle Database TLS1.2 / Connessione SSL tramite JDBC thin e JKS

Di seguito sono riportati i passaggi da seguire per configurare il thin driver Oracle JDBC per la connessione al database utilizzando TLS v1.2 (supponendo che la configurazione del database sia corretta).

Passaggio 1:applica la patch per il bug 19030178 (non necessaria a partire dalla 12.2.0.1)

Dovrai applicare la patch per il bug 19030178 che consente TLSv1.2. Nota che la patch consente TLSv1.2 ma non lo abilita per impostazione predefinita. Quindi con il driver patchato 12.1.0.2 devi anche impostare oracle.net.ssl_version='1.2'. Questa proprietà può essere impostata come proprietà di sistema (usando -D) o tramite le proprietà dell'origine dati.

Passaggio 2:installa i file JCE

Senza i file JCE (Java Cryptography Extension), le suite di crittografia avanzate (ad esempio TLS_RSA_WITH_AES_256_CBC_SHA256) non saranno abilitate. Quindi, se stai usando JDK7 o JDK8, dovresti installare i file JCE Unlimited Strength Jurisdiction Policy. Questi file sono disponibili sul sito Web di Oracle.

Passaggio 3:utilizza sempre l'ultimo aggiornamento di JDK

Assicurati di utilizzare l'ultimo aggiornamento di JDK7 o JDK8 perché sono stati corretti i bug richiesti per TLSv1.2.

Passaggio 4:utilizza i file JKS invece dei portafogli

Sembra che tu l'abbia già fatto, ma solo per gli altri:i portafogli sono complicati da configurare e utilizzare con il thin driver Oracle JDBC perché richiedono jar e proprietà extra. I file JKS invece sono supportati nativamente in JRE e, secondo la mia esperienza, hanno sempre funzionato bene.

Passaggio 5:quando utilizzi JDK7, abilita esplicitamente le suite di crittografia avanzate

Questo passaggio non è richiesto quando si utilizza JDK8. Con JDK7, se stai utilizzando una suite di crittografia avanzata come TLS_RSA_WITH_AES_256_CBC_SHA256, devi abilitarla tramite la proprietà di connessione oracle.net.ssl_cipher_suites.

Passaggio 6:debug con -Djavax.net.debug=all

Infine, se riscontri più problemi, puoi attivare la traccia per scoprire cosa sta succedendo usando -Djavax.net.debug=all.

====ESEMPIO CON JDK7 E IL 12.1.0.2 THIN DRIVER CON PATCH =====

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'

====ESEMPIO CON JDK8 E IL 12.1.0.2 THIN DRIVER CON PATCH =====

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'