Connexions JDBC Thin avec un portefeuille (mTLS)

Autonomous Database exige une connexion sécurisée qui utilise TLSv1.2 (Transport Layer Security). Selon les options de configuration réseau, Autonomous Database prend en charge l'authentification mTLS et TLS.

Remarque

Si vous utilisez TLS, au lieu de mTLS, pour vos connexions utilisant le pilote JDBC Thin avec JDK8u162 ou une version supérieure, aucun portefeuille n'est requis. Les connexions TLS sont activées pour les configurations réseau suivantes :


  • Accès à l'adresse privée uniquement : configuration réseau avec une adresse privée.

  • Accès sécurisé à partir des adresses IP et réseaux cloud virtuels autorisés uniquement : configuration avec une liste de contrôle d'accès.

    Si votre instance Autonomous Database se trouve sur une adresse publique sans liste de contrôle d'accès, vous pouvez ajouter 0.0.0.0/0 en tant que liste de contrôle d'accès CIDR et activer l'authentification TLS. L'ajout de 0.0.0.0/0 en tant que liste de contrôle d'accès CIDR est identique au fait d'avoir votre instance Autonomous Database sur une adresse publique sans liste de contrôle d'accès.

Pour plus d'informations, reportez-vous à Connexions sécurisées à Autonomous Database avec mTLS ou TLS.

Prérequis de connexion de pilote JDBC Thin pour les connexions avec portefeuille (mTLS)

Les applications qui utilisent le pilote JDBC Thin prennent en charge l'authentification TLS et TLS mutuelle (mTLS). L'authentification TLS mutuelle requiert la fourniture des informations d'identification de la base de données Oracle, y compris les portefeuilles Oracle ou les fichiers Java KeyStore (JKS) lors de la connexion à la base de données.

Procédez comme suit avant de vous connecter à la base de données :

  1. Provisionnement d'Autonomous Database : créez une base de données et obtenez vos informations d'identification (nom utilisateur et mot de passe).

    Pour plus d'informations, reportez-vous à Provisionnement d'une instance Autonomous Database.

  2. Pour les connexions TLS mutuelles, téléchargez des informations d'identification client : décompressez le fichier wallet_databasename.zip dans un emplacement sécurisé. Assurez-vous que seuls les utilisateurs autorisés ont accès à ces fichiers.

    Pour plus d'informations sur le téléchargement des informations d'identification client pour Autonomous Database, reportez-vous à Téléchargement des informations d'identification client (palettes).

  3. Vérifiez votre version de JDK pour plus de sécurité : si vous utilisez JDK11, JDK10 ou JDK9, vous n'avez rien à faire pour cette étape. Si votre version de JDK est inférieure à JDK8u162, vous devez télécharger les fichiers de stratégie de compétence illimitée JCE. Reportez-vous au fichier README pour obtenir les remarques sur l'installation. Téléchargez les fichiers JCE à partir de Téléchargement de Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy 8.
  4. Vérifiez la version du pilote JDBC : téléchargez un pilote JDBC léger pris en charge (ojdbc8.jar et ucp.jar). Vous avez également besoin des fichiers JAR supplémentaires oraclepki.jar, osdt_core.jar et osdt_cert.jar à utiliser avec les portefeuilles Oracle.

    Les versions prises en charge sont les suivantes :

    • JDBC Thin : 11.2.0.4 (ou version ultérieure avec patch exceptionnel pour le bug 28492769), 12.2 (ou version ultérieure avec patch exceptionnel pour le bug 28492769), 18 (version de base ou version ultérieure avec patch exceptionnel pour le bug 28492769), 19 (version de base ou version ultérieure) ou 21 (version de base ou version ultérieure)

    Pour les applications qui utilisent la fonctionnalité Universal Connection Pool (UCP) de JDBC, il est fortement recommandé d'utiliser des versions 19.13 ou supérieures, ou 21.3 ou supérieures du pilote JDBC. Ces versions incluent un comportement de purge approprié afin de minimiser l'impact sur les applications lorsque la maintenance planifiée est effectuée dans Autonomous Database. Le protocole UCP réapprovisionne les connexions du pool de manière proactive afin que les connexions actives ne soient pas affectées par la maintenance.

    Pour les anciennes versions du pilote, un patch pour le bug 31112088 peut également être demandé en déposant une demande de service.

    Téléchargez les versions prises en charge : Téléchargements du pilote JDBC Oracle Database et des fichiers JAR de compagnon.

Utilisation d'une chaîne de connexion d'URL JDBC avec un pilote JDBC Thin et des portefeuilles

La chaîne de connexion se trouve dans le fichier tnsnames.ora, qui fait partie du téléchargement des informations d'identification client. Le fichier tnsnames.ora contient les noms de service prédéfinis. Chaque service a ses propres alias TNS et chaîne de connexion.

Voici un exemple d'entrée, avec dbname_high comme alias TNS et une chaîne de connexion dans tnsnames.ora :
dbname_high= (description=
      (address=(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com))
      (connect_data=(service_name=dbname_high.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

Définissez l'emplacement de tnsnames.ora avec la propriété TNS_ADMIN de l'une des manières suivantes :

  • En tant que partie de la chaîne de connexion (uniquement avec le pilote JDBC 18.3 ou version ultérieure)
  • En tant que propriété système -Doracle.net.tns_admin
  • En tant que propriété de connexion (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN)

Lorsque vous utilisez le pilote JDBC 18.3, la chaîne de connexion inclut l'alias TNS et la propriété de connexion TNS_ADMIN.

Exemple de chaîne de connexion utilisant le pilote JDBC Linux 18.3 :

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"

Exemple de chaîne de connexion utilisant le pilote JDBC 18.3 (Windows) :

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=C:\\Users\\test\\wallet_dbname"

La propriété de connexion TNS_ADMIN indique les éléments suivants :

  • Emplacement du fichier tnsnames.ora.
  • Emplacement des fichiers Oracle Wallet (ewallet.sso, ewallet.p12) ou Java KeyStore (JKS) (truststore.jks, keystore.jks).
  • Emplacement du fichier ojdbc.properties. Ce fichier contient les propriétés de connexion requises pour utiliser des portefeuilles Oracle ou Java KeyStore (JKS).
Remarque

Si vous utilisez des pilotes JDBC 12.2.0.1 ou versions antérieures, la chaîne de connexion contient uniquement l'alias TNS. Pour vous connecter à l'aide d'autres pilotes JDBC, procédez comme suit :

  • Définissez l'emplacement du fichier tnsnames.ora en tant que propriété système avec -Doracle.net.tns_admin ou en tant que propriété de connexion (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN).
  • Définissez les propriétés de connexion liées au portefeuille ou au JKS en plus de TNS_ADMIN.

Par exemple, dans ce cas, définissez l'alias TNS dans DB_URL sans la partie TNS_ADMIN comme suit :

DB_URL=”jdbc:oracle:thin:@dbname_high”

Pour plus d'informations, reportez-vous à Noms de service de base de données pour Autonomous Database.

Utilisation d'une connexion JDBC avec le pilote JDBC 18.3

Les applications qui utilisent le pilote JDBC Thin peuvent se connecter aux bases de données autonomes à l'aide de portefeuilles Oracle ou de JKS (Java KeyStore).

Utiliser Oracle Wallet

Pour utiliser Java et le pilote JDBC Thin 18.3 afin de se connecter à Autonomous Database avec Oracle Wallet, procédez comme suit :

  1. Vérifiez que les prérequis sont respectés : pour plus d'informations, reportez-vous à Prérequis de connexion de pilote JDBC mince pour les connexions avec portefeuille (mTLS).

  2. Vérifiez la connexion : vous pouvez utiliser un programme Java, un servlet ou des IDE pour vérifier la connexion à la base de données. Un test simple consiste à télécharger DataSourceSample.java ou UCPSample.java à partir d'exemples de code JDBC et à mettre à jour l'URL de connexion afin d'obtenir l'alias TNS requis et de transmettre TNS_ADMIN, en fournissant le chemin pour tnsnames.ora et les fichiers de portefeuille. Dans l'exemple de code source, mettez également à jour le nom utilisateur et le mot de passe de base de données. Exemples :

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Remarque

    Si vous utilisez Microsoft Active Directory avec une base de données, dans l'exemple de code source, mettez à jour le nom utilisateur avec le nom utilisateur Active Directory et le mot de passe avec le mot de passe utilisateur Active Directory. Pour plus d'informations, reportez-vous à Utilisation de Microsoft Active Directory avec Autonomous Database.
  3. Définissez l'emplacement du portefeuille : le fichier de propriétés ojdbc.properties est préchargé avec la propriété de connexion associée au portefeuille.

    oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
    Remarque

    Ne modifiez pas le fichier ojdbc.properties. La valeur de TNS_ADMIN détermine l'emplacement du portefeuille.
  4. Effectuez la compilation et l'exécution : compilez et exécutez l'exemple pour obtenir une connexion opérationnelle. Assurez-vous que les éléments oraclepki.jar, osdt_core.jar et osdt_cert.jar figurent dans classpath. Exemple :

    java –classpath
          ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. UCPSample
Remarque

La partie portefeuille de connexion automatique du fichier ZIP d'informations d'identification client téléchargées d'Autonomous Database rend inutile l'utilisation de l'authentification par nom utilisateur et mot de passe par l'application.

Utilisation de Java KeyStore

Afin d'utiliser Java et le pilote JDBC Thin 18.3 pour la connexion à Autonomous Database avec Java KeyStore, procédez comme suit :

  1. Vérifiez que les prérequis sont respectés : pour plus d'informations, reportez-vous à Prérequis de connexion de pilote JDBC mince pour les connexions avec portefeuille (mTLS).

  2. Préparez les détails de la base de données : vous pouvez utiliser un programme Java, un servlet ou des IDE pour vérifier la connexion à la base de données. Un test simple consiste à télécharger DataSourceSample.java ou UCPSample.java à partir d'exemples de code JDBC. Dans cet exemple, utilisez l'URL de connexion comme indiqué. La connexion DB_URL contient l'alias TNS, par exemple dbname_high présent dans tnsnames.ora. Vous pouvez indiquer le chemin pour le fichier tnsnames.ora via la propriété TNS_ADMIN comme indiqué dans l'URL. Assurez-vous d'utiliser le nom utilisateur et le mot de passe de base de données associés à votre base de données.

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Remarque

    Si vous utilisez Microsoft Active Directory avec Autonomous Database, veillez à modifier l'exemple de code source afin d'utiliser le nom utilisateur Active Directory et le mot de passe utilisateur Active Directory. Pour plus d'informations, reportez-vous à Utilisation de Microsoft Active Directory avec Autonomous Database.
  3. Définissez les propriétés de connexion liées au JKS : ajoutez les propriétés de connexion liées au JKS au fichier ojdbc.properties. Le mot de passe keyStore et le mot de passe du truststore sont ceux indiqués lors du téléchargement du fichier d'informations d'identification client au format .zip.

    Pour utiliser la connectivité SSL au lieu d'Oracle Wallet, indiquez les fichiers de clés d'accès et de truststore et leur mot de passe respectif dans le fichier ojdbc.properties comme suit :

    
    # Properties for using Java KeyStore (JKS)
    oracle.net.ssl_server_dn_match=true
    javax.net.ssl.trustStore==${TNS_ADMIN}/truststore.jks
    javax.net.ssl.trustStorePassword=password
    javax.net.ssl.keyStore==${TNS_ADMIN}/keystore.jks
    javax.net.ssl.keyStorePassword=password
    Remarque

    Assurez-vous de commenter la propriété relative au portefeuille dans ojdbc.properties. Exemple :
    
    # Property for using Oracle Wallets
    # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
  4. Effectuez la compilation et l'exécution : compilez et exécutez l'exemple pour obtenir une connexion opérationnelle. Exemple :

    java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar UCPSample

Connexion à l'aide du pilote JDBC Thin 12.2 ou version antérieure

Si vous utilisez le pilote JDBC 12.2.0.2 ou une version antérieure, définissez les propriétés Java avant de démarrer l'application. En général, vous définissez les propriétés dans le script de démarrage de l'application.

Si vous ne pouvez pas utiliser les derniers pilotes JDBC, vous pouvez vous connecter à Autonomous Database à l'aide de 12.2.0.2 ou d'autres pilotes JDBC plus anciens. Les pilotes JDBC de version 12.2 ou antérieure ne prennent pas en charge le fichier ojdbc.properties. Avec les anciennes versions de pilote JDBC, vous devez transmettre des portefeuilles ou des propriétés liées à JKS en tant que propriétés système ou propriétés de connexion pour établir une connexion.

Utiliser Oracle Wallet

Pour utiliser Java et les pilotes JDBC 12.2 ou versions antérieures afin de se connecter à Autonomous Database avec Oracle Wallet, procédez comme suit :

  1. Vérifiez que les prérequis sont respectés : pour plus d'informations, reportez-vous à Prérequis de connexion de pilote JDBC mince pour les connexions avec portefeuille (mTLS).

  2. Vérifiez la connexion : vous pouvez utiliser un programme Java, un servlet ou des IDE pour vérifier la connexion à la base de données. Un test simple consiste à télécharger DataSourceSample.java ou UCPSample.java à partir d'exemples de code JDBC et à mettre à jour l'URL de connexion pour obtenir l'alias TNS requis. Mettez également à jour l'exemple de code source pour utiliser le nom utilisateur et le mot de passe de base de données. Exemples :

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Remarque

    Si vous utilisez Microsoft Active Directory avec Autonomous Database, mettez à jour l'exemple de code source afin d'utiliser le nom utilisateur Active Directory et le mot de passe utilisateur Active Directory. Pour plus d'informations, reportez-vous à Utilisation de Microsoft Active Directory avec Autonomous Database.
  3. Définissez l'emplacement du portefeuille : ajoutez OraclePKIProvider à la fin de la liste des fournisseurs dans le fichier java.security (ce fichier fait partie de votre installation JRE située dans $JRE_HOME/jre/lib/security/java.security) qui se présente généralement comme suit :

    security.provider.14=oracle.security.pki.OraclePKIProvider
  4. Effectuez la compilation et l'exécution : compilez et exécutez l'exemple pour obtenir une connexion opérationnelle. Assurez-vous que les éléments oraclepki.jar, osdt_core.jar et osdt_cert.jar figurent dans classpath. Vous devez également transmettre les propriétés de connexion. Mettez à jour les propriétés avec l'emplacement où se trouvent les fichiers de portefeuille et tnsnames.ora.

    java –classpath 
    ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:.
    -Doracle.net.tns_admin=/users/test/wallet_dbname  
    -Doracle.net.ssl_server_dn_match=true  
    -Doracle.net.ssl_version=1.2  (Not required for 12.2)
    -Doracle.net.wallet_location= “(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/users/test/wallet_dbname)))” 
    UCPSample
Remarque

Il s'agit d'exemples liés au système Windows. Ajoutez un caractère de suite \ si vous définissez les propriétés –D sur plusieurs lignes sous UNIX (Linux ou Mac).

Utilisation de Java KeyStore

Afin d'utiliser Java et les pilotes JDBC Thin 12.2 ou version antérieure pour la connexion à Autonomous Database avec Java KeyStore (JKS), procédez comme suit :

  1. Vérifiez que les prérequis sont respectés : pour plus d'informations, reportez-vous à Prérequis de connexion de pilote JDBC mince pour les connexions avec portefeuille (mTLS).

  2. Vérifiez la connexion : vous pouvez utiliser un programme Java, un servlet ou des IDE pour vérifier la connexion à la base de données. Un test simple permet de télécharger DataSourceSample.java ou UCPSample.java à partir des exemples de code JDBC et de mettre à jour l'URL de connexion afin d'obtenir l'alias TNS requis et de transmettre TNS_ADMIN, en fournissant le chemin pour tnsnames.ora, ainsi que de mettre à jour l'URL de connexion afin d'obtenir l'alias TNS requis. Dans l'exemple de code source, mettez également à jour le nom utilisateur et le mot de passe de base de données. Exemples :

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Remarque

    Si vous utilisez Microsoft Active Directory avec Autonomous Database, mettez à jour l'exemple de code source afin d'utiliser le nom utilisateur Active Directory et le mot de passe utilisateur Active Directory. Pour plus d'informations, reportez-vous à Utilisation de Microsoft Active Directory avec Autonomous Database.
  3. Effectuez la compilation et l'exécution : procédez à la compilation et à l'exécution de l'exemple pour obtenir une connexion opérationnelle. Vous devez transmettre les propriétés de connexion comme indiqué. Mettez à jour les propriétés avec l'emplacement où se trouvent les fichiers JKS et tnsnames.ora. Si vous voulez transmettre ces propriétés de connexion par programmation, reportez-vous à DataSourceForJKS.java. Exemple :

    java 
    -Doracle.net.tns_admin=/users/test/wallet_dbname
    -Djavax.net.ssl.trustStore=truststore.jks
    -Djavax.net.ssl.trustStorePassword=**********
    -Djavax.net.ssl.keyStore=keystore.jks    
    -Djavax.net.ssl.keyStorePassword=************   
    -Doracle.net.ssl_server_dn_match=true    
    -Doracle.net.ssl_version=1.2 // Not required for 12.2

Les connexions JDBC Thin avec un proxy HTTP

Si le client se trouve derrière un pare-feu et que votre configuration réseau requiert un proxy HTTP pour se connecter à Internet, vous devez utiliser le client léger JDBC 18.1 ou une version ultérieure qui permet les connexions via des proxy HTTP.

Pour vous connecter à Autonomous Database via un proxy HTTPS, ouvrez et mettez à jour votre fichier tnsnames.ora. Ajoutez le nom d'hôte (https_proxy) et le port (https_proxy_port) du proxy HTTP à la chaîne de connexion. Remplacez les valeurs par vos informations de proxy HTTPS. Exemples :

  1. Ajoutez le nom d'hôte et le port du proxy HTTP aux définitions de connexion dans tnsnames.ora. Vous devez ajouter les paramètres https_proxy et https_proxy_port dans la section d'adresse des définitions de connexion. Par exemple, la commande suivante définit le proxy HTTP sur proxyhostname et le port du proxy HTTP sur 80. Remplacez ces valeurs par les informations de votre proxy HTTP :

db2022adb_high =
       (description=
             (address=
                   (https_proxy=proxyhostname)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com)
             )
             (connect_data=(service_name=db2022adb_high.adb.oraclecloud.com)
             )
             (security=security=(ssl_server_dn_match=yes)
             )
       )
Remarque

  • Les versions du client léger JDBC antérieures à la version 18.1 ne prennent pas en charge les connexions via un proxy HTTP.

  • La réussite de la connexion dépend de configurations de proxy spécifiques et les performances des transferts de données dépendent de la capacité du proxy. Cette fonctionnalité n'est pas recommandée par Oracle dans les environnements de production où les performances sont essentielles.

  • La configuration de tnsnames.ora pour le proxy HTTP peut ne pas être suffisante en fonction de la configuration réseau et des stratégies de sécurité de votre organisation. Par exemple, certains réseaux nécessitent un nom utilisateur et un mot de passe pour le proxy HTTP.

  • Dans tous les cas, contactez l'administrateur réseau pour ouvrir des connexions sortantes aux hôtes du domaine oraclecloud.com à l'aide du port approprié sans passer par un proxy HTTP.