Lors de la mise en place de connexions TCPS (TLS) dans Oracle, il est essentiel de distinguer les problèmes TLS des problèmes Oracle Net.
La méthode présentée ci‑dessous permet de valider la couche TLS indépendamment d’Oracle, avant toute utilisation de sqlplus.
Cette approche est idéale pour diagnostiquer des erreurs comme ORA‑28864.
Contexte
- Listener Oracle configuré en TCPS
- Wallet serveur opérationnel
- CA interne (
root_ca) - Objectif : valider certificats, chaîne de confiance et protocole TLS
1. Vérifier le contenu du wallet serveur
orapki wallet display -wallet /appli/oracle/wallet_root/tls
Objectif
Afficher le contenu du wallet TCPS côté serveur.
À vérifier
- Présence du certificat serveur (User Certificate)
- Présence de la CA de confiance (Trusted Certificate)
- Cohérence des certificats réellement utilisés par le listener TCPS
Si le certificat ou la CA attendue est absente ici, aucune connexion TCPS ne pourra fonctionner.
2. Exporter le certificat de la CA depuis le wallet serveur
orapki wallet export -wallet /appli/oracle/wallet_root/tls -dn "CN=root_ca" -cert /tmp/tcps_test/root_ca.pem
Objectif
Exporter le certificat public de la CA utilisée pour signer le certificat serveur.
Détails
- Le DN
CN=root_capermet d’identifier la CA - Le fichier
root_ca.pemest généré au format PEM - Il pourra être utilisé par :
- OpenSSL
- des wallets Oracle clients
- tout outil TLS standard
3. Créer un wallet client de test minimal
orapki wallet add -wallet /tmp/tcps_test/wallet -trusted_cert -cert root_ca.pem
Objectif
Créer un wallet client minimal, servant uniquement de truststore.
Caractéristiques
- Aucun certificat utilisateur
- Aucune clé privée
- Une seule entrée Trusted Certificate (
root_ca)
Ce wallet permet de tester la chaîne de confiance TLS, sans interférence avec des configurations existantes.
4. Vérifier le contenu du wallet de test
orapki wallet display -wallet /tmp/tcps_test/wallet
Résultat attendu
- Un certificat de type Trusted Certificate
- DN :
CN=root_ca - Aucun User Certificate
5. Isoler la configuration Oracle Net
export TNS_ADMIN=/tmp/tcps_test
Forcer Oracle à utiliser exclusivement la configuration située dans :
/tmp/tcps_test/
Cela concerne :
sqlnet.oratnsnames.ora
Cette isolation garantit un test propre et reproductible, sans héritage de configuration.
6. Vérifier la variable d’environnement
echo $TNS_ADMIN
Résultat attendu
/tmp/tcps_test
Si ce n’est pas le cas, Oracle continuera à utiliser une autre configuration.
7. Tester la couche TLS avec OpenSSL (TLS 1.2)
openssl s_client -connect dtcodevora002l.pld.infrasys16.com:1541 -CAfile /tmp/tcps_test/root_ca.pem -tls1_2
Objectif clé
Tester uniquement la couche TLS, sans Oracle Net ni SQL*Net.
Ce que ce test valide
- Le listener écoute bien en TCPS
- Le certificat serveur est correctement présenté
- La CA valide le certificat serveur
- TLS 1.2 est accepté
- Le nom DNS (FQDN) correspond au certificat (SAN/CN)
Résultat attendu
- Aucun
verify error - Aucun
certificate unknown - Connexion TLS établie avec succès
Si ce test fonctionne, la couche TLS est correcte.
Tout problème restant est alors forcément lié à Oracle Net (CN/SAN,SSL_SERVER_DN_MATCH, etc.).
Conclusion
Cette méthode permet de :
- Valider la chaîne de confiance TLS
- Tester le listener TCPS indépendamment d’Oracle
- Diagnostiquer efficacement les erreurs ORA‑28864
- Séparer clairement :
- TLS
- wallets
sqlnet.ora- Oracle Net
C’est une approche “par couches”, fiable et fortement recommandée pour toute mise en œuvre TCPS.