To ensure secure communication among Oracle Globally Distributed AI Database components in a distributed environment, Oracle recommends using Oracle Database Native Network Encryption or the TCP/IP with Transport Layer Security (TCPS) protocol to encrypt and protect all connections to and between the shard catalog and individual shards.
This procedure explains how to configure TLS 1.3 over TCPS in Oracle AI Database 26ai using a certificate issued by a third-party Certificate Authority (CA), such as DigiCert, Sectigo, GlobalSign, or an enterprise PKI.

Step 1: Verify database version
Step 2: Verify DB and default listener must be up and running.
Step 3: Create the wallet directory
Log in as the Oracle software owner.
su – oracle
Create SSL wallet directory and set the permissions:
mkdir -p /refresh/home/tls_wallet
chmod 700 /refresh/home/tls_wallet
Step 3: Create the Oracle Wallet
orapki wallet create -wallet <<wallet_path>> -pwd <<wallet_password>> -auto_login
[oracle@linux9 ~]$ mkdir -p /refresh/home/tls_wallet
[oracle@linux9 ~]$
[oracle@linux9 ~]$ orapki wallet create -wallet /refresh/home/tls_wallet -pwd Oracle_1234 -auto_login
Oracle PKI Tool Release 23.0.0.0.0 – Production
Version 23.0.0.0.0
Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.
Operation is successfully completed.
[oracle@linux9 ~]$
[oracle@linux9 ~]$ ls -ltr /refresh/home/tls_wallet
total 8
-rw——- 1 oracle oracle 0 Nov 3 18:28 ewallet.p12.lck
-rw——- 1 oracle oracle 225 Nov 3 18:28 ewallet.p12
-rw——- 1 oracle oracle 0 Nov 3 18:28 cwallet.sso.lck
-rw——- 1 oracle oracle 270 Nov 3 18:28 cwallet.sso
[oracle@linux9 ~]$
Step 4: Generate a Private Key and Certificate Signing Request (CSR)
A CSR is submitted to the third-party CA, which verifies the requested identity and issues a signed certificate
orapki wallet add -wallet /refresh/home/tls_wallet -dn “CN=db26ai.vm.oracle.com,O=MyCompany,C=US” -keysize 2048
[oracle@db26ai ssl_wallet]$ orapki wallet add -wallet /refresh/home/tls_wallet -dn “CN=db26ai.vm.oracle.com,O=MyCompany,C=US” -keysize 2048
Oracle PKI Tool Release 23.0.0.0.0 – Production
Version 23.0.0.0.0
Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.
Cannot modify auto-login (sso) wallet
Enter wallet password:
Operation is successfully completed.
[oracle@db26ai ssl_wallet]$
This generates the private key and certificate request associated with the specified DN. The private key remains in the Oracle Wallet.
Step 5: Export the CSR
orapki wallet export -wallet /refresh/home/tls_wallet -dn “CN=db26ai.vm.oracle.com,O=MyCompany,C=US” -request “/tmp/db26ai.csr”
[oracle@db26ai ssl_wallet]$ orapki wallet export -wallet /refresh/home/tls_wallet -dn “CN=db26ai.vm.oracle.com,O=MyCompany,C=US” -request “/tmp/db26ai.csr”
Oracle PKI Tool Release 23.0.0.0.0 – Production
Version 23.0.0.0.0
Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.
Operation is successfully completed.
[oracle@db26ai ssl_wallet]$
[oracle@db26ai ssl_wallet]$ ls -ltr /tmp/db26ai.csr
-rw——- 1 oracle oracle 959 Nov 4 18:22 /tmp/db26ai.csr
[oracle@db26ai ssl_wallet]$
Inspect the CSR:
openssl req -in /tmp/db26ai.csr -noout -text
Verify the subject and public key. Certificate SAN requirement: Ensure the issued certificate contains a Subject Alternative Name (SAN) covering the hostname used by database clients, such as db26ai.example.com. Confirm the CA’s SAN enrollment requirements before submitting the CSR.
Step 6: Submit the CSR to the CA Authority
Please submit the db26ai.csr file to your organization’s approved Certificate Authority (CA) and request a CA-signed server certificate. Once the certificate signing process is complete, the CA will typically provide the following three files:
db26ai.crt è SERVER CERTIFICATE
intermediateCA.crt è INTERMEDIATE CERTIFICATE
rootCA.crt è Trusted Root CA certificate
Please Note : Do not submit the wallet private key to the CA. Only submit the CSR.
Step 7: Import the root CA certificate
Copy the three certificates received from your organization’s Certificate Authority (CA) to the database server. You can either use an existing directory or create a new dedicated directory to store these certificate files.
orapki wallet add -wallet /refresh/home/tls_wallet -trusted_cert -cert /refresh/home/certificates/rootCA.crt
Step 8: Import intermediate CA certificates
orapki wallet add -wallet /refresh/home/tls_wallet -trusted_cert -cert /refresh/home/certificates/intermediateCA.crt
Sometimes CA provides multiple intermediate certificates, import all required certificates in the chain.
Step 9: Import the signed database server certificate
orapki wallet add -wallet /refresh/home/tls_wallet –user_cert -cert /refresh/home/certificates /db26ai.crt
The certificate must correspond to the private key and CSR generated in the same wallet.
Step 10: Verify the Oracle Wallet
orapki wallet display -wallet /refresh/home/tls_wallet
After importing the CA-signed server certificate, intermediate CA certificate, and root CA certificate, your Oracle Wallet should display the following certificate information:
[oracle@db26ai wallet]$ orapki wallet display -wallet .
Oracle PKI Tool Release 23.0.0.0.0 – Production
Version 23.0.0.0.0
Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.
Requested Certificates:
User Certificates:
Subject: CN=db26ai.vm.oracle.com,O=Oracle26aiLab,C=US
Trusted Certificates:
Subject: CN=Oracle26ai-Intermediate-CA,O=Oracle26aiLab,C=US
Subject: CN=Oracle26ai-Root-CA,O=Oracle26aiLab,C=US
[oracle@db26ai wallet]$
Step 11: Update listener.ora
Back up the configuration:
cp -p listener.ora listener.ora.bak
Edit:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db26ai.vm.oracle.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = db26ai.vm.oracle.com)(PORT = 1523))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_PDB_LISTENER = ON
VALID_NODE_CHECKING_REGISTRATION_PDB_LISTENER = SUBNET
WALLET_LOCATION =
(SOURCE=
(METHOD=File)
(METHOD_DATA=
(DIRECTORY=/refresh/home/tls_wallet)
)
)
SSL_CLIENT_AUTHENTICATION=FALSE
SSL_VERSION=1.3
In RAC environment If the listener runs from Grid Infrastructure, configure the appropriate Grid Infrastructure listener and wallet rather than assuming the database Oracle Home owns the listener.
Step 12: Update sqlnet.ora
Back up the file sqlnet.ora and edit.
Edit:
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES = (BEQ, TCPS)
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /refresh/home/tls_wallet)
)
)
SSL_VERSION = 1.3
SSL_CLIENT_AUTHENTICATION = FALSE
Step 13: Restart the Oracle Listener and database
Step 14: Add entry in tnsnames.ora
ORCL_SSL =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCPS)
(HOST = db26ai.vm.oracle.com)
(PORT = 1523)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
(SECURITY =
(SSL_SERVER_DN_MATCH = YES)
(WALLET_LOCATION = /refresh/home/tls_wallet)
)
)
Step 15: Verify Local Database Connectivity Using TNSPING and SQL*Plus.
[oracle@db26ai wallet]$ tnsping ORCL_SSL
TNS Ping Utility for Linux: Version 23.26.1.0.0 – for Oracle Cloud and Engineered Systems on 04-NOV-2026 17:24:43
Copyright (c) 1997, 2025, Oracle. All rights reserved.
Used parameter files:
/refresh/home/app/oracle/product/23.26.1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS) (HOST = db26ai.vm.oracle.com) (PORT = 1523)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)) (SECURITY = (SSL_SERVER_DN_MATCH = YES) (WALLET_LOCATION = /refresh/home/oracle26ai_ssl/client_wallet)))
OK (10 msec)
[oracle@db26ai ssl_wallet]$ sqlplus -L ‘c##tapp01@ORCL_SSL’
SQL*Plus: Release 23.26.1.0.0 – for Oracle Cloud and Engineered Systems on Wed Nov 4 20:01:41 2026
Version 23.26.1.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Enter password:
Last Successful login time: Wed Nov 04 2026 17:24:48 +00:00
Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 – for Oracle Cloud and Engineered Systems
Version 23.26.1.0.0
SQL> SELECT sys_context(‘USERENV’,’NETWORK_PROTOCOL’) AS protocol FROM dual;
PROTOCOL
——————————————————————————–
tcps
SQL>
Configure the Oracle Client to Establish a Secure Database Connection Using the TCPS Port.
Step1: Login on Linux client machine and create the wallet directory
mkdir -p /home/oracle/oracle26ai_ssl/client_wallet
mkdir -p /home/oracle/oracle26ai_ssl/certs
chmod 700 /home/oracle/oracle26ai_ssl/client_wallet
chmod 700 /home/oracle/oracle26ai_ssl/certs
Step2: Copy CA Certificates to the Linux client machine
rootCA.crt
intermediateCA.crt
Step3: Create an Oracle Client Wallet
orapki wallet create -wallet /home/oracle/oracle26ai_ssl/client_wallet -auto_login
Step 4 : Import the Root CA Certificate into the Client Wallet
orapki wallet add -wallet /home/oracle/oracle26ai_ssl/client_wallet
-trusted_cert -cert /home/oracle/oracle26ai_ssl/certs/rootCA.crt
Step 5: Import the Intermediate CA Certificate
orapki wallet add -wallet /home/oracle/oracle26ai_ssl/client_wallet -trusted_cert -cert /home/oracle/oracle26ai_ssl/certs/intermediateCA.crt
Step 6: Verify the Oracle Client Wallet
Step 7: Configure sqlnet.ora on the Linux Client and Add the following configuration
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /home/oracle/oracle26ai_ssl/client_wallet)
)
)
TLS_VERSION = 1.3
TLS_CLIENT_AUTHENTICATION = FALSE
TLS_SERVER_DN_MATCH = TRUE
Step8 : Configure tnsnames.ora on the Linux Client
CLI_SSL =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCPS)
(HOST = db26ai.vm.oracle.com)
(PORT = 1523)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
(SECURITY =
(TLS_SERVER_DN_MATCH = TRUE)
(WALLET_LOCATION = /home/oracle/oracle26ai_ssl/client_wallet)
)
)
Step 8: Test tnsping and SQL*Plus Connection from the Linux Client tnsping
Tnsping CLI_SSL
Sqlplus <<app_user>>@CLI_SSL