Oracle
 sql >> Base de données >  >> RDS >> Oracle

Connexion Oracle Database TLS1.2 / SSL utilisant JDBC thin et JKS

Voici les étapes à suivre pour configurer le pilote léger Oracle JDBC pour se connecter à la base de données à l'aide de TLS v1.2 (en supposant que la configuration de votre base de données est correcte).

Étape 1 :Appliquer le correctif pour le bogue 19030178 (inutile à partir de la version 12.2.0.1)

Vous devrez appliquer le correctif pour le bogue 19030178 qui autorise TLSv1.2. Notez que le correctif autorise TLSv1.2 mais ne l'active pas par défaut. Ainsi, avec le pilote corrigé 12.1.0.2, vous devez également définir oracle.net.ssl_version='1.2'. Cette propriété peut être définie en tant que propriété système (à l'aide de -D) ou via les propriétés de la source de données.

Étape 2 :Installer les fichiers JCE

Sans les fichiers Java Cryptography Extension (JCE), les suites de chiffrement fort (par exemple TLS_RSA_WITH_AES_256_CBC_SHA256) ne seront pas activées. Ainsi, que vous utilisiez JDK7 ou JDK8, vous devez installer les fichiers de stratégie de juridiction JCE Unlimited Strength. Ces fichiers peuvent être trouvés sur le site Web d'Oracle.

Étape 3 :Utilisez toujours la dernière mise à jour du JDK

Assurez-vous d'utiliser la dernière mise à jour de JDK7 ou JDK8 car les bogues requis pour TLSv1.2 ont été corrigés.

Étape 4 :Utilisez des fichiers JKS au lieu de portefeuilles

Il semble que vous l'ayez déjà fait, mais juste pour que les autres le voient :les portefeuilles sont compliqués à configurer et à utiliser avec le pilote léger Oracle JDBC car ils nécessitent des fichiers jar supplémentaires et des propriétés supplémentaires. Les fichiers JKS, d'autre part, sont pris en charge nativement dans le JRE et, d'après mon expérience, ont toujours bien fonctionné.

Étape 5 :Lorsque vous utilisez JDK7, activez explicitement les suites de chiffrement fortes

Cette étape n'est pas requise lors de l'utilisation de JDK8. Avec JDK7, si vous utilisez une suite de chiffrement puissante telle que TLS_RSA_WITH_AES_256_CBC_SHA256, vous devez l'activer via la propriété de connexion oracle.net.ssl_cipher_suites.

Étape 6 :Déboguer avec -Djavax.net.debug=all

Enfin, si vous rencontrez d'autres problèmes, vous pouvez activer le traçage pour savoir ce qui se passe en utilisant -Djavax.net.debug=all.

====EXEMPLE AVEC JDK7 ET LE PILOTE THIN 12.1.0.2 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'

====EXEMPLE AVEC JDK8 ET LE PILOTE THIN 12.1.0.2 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'