7.2 KiB
Setup 1: self signed certificated and certificates exchange
Server side (togoria)
Create the wallet:
orapki wallet create \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-auto_login_local
Create certificate in wallet:
orapki wallet add \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-dn "CN=togoria.swgalaxy" -keysize 1024 -self_signed -validity 3650
Display wallet contents (wallet password is not required):
orapki wallet display \
-wallet "/app/oracle/staging_area/TLS_poc/wallet"
Export certificate:
orapki wallet export \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-dn "CN=togoria.swgalaxy" \
-cert /app/oracle/staging_area/TLS_poc/exports/togoria.swgalaxy.crt
Client side (wayland)
Create the wallet:
orapki wallet create \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-auto_login_local
Create certificate in wallet:
orapki wallet add \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-dn "CN=wayland.swgalaxy" -keysize 1024 -self_signed -validity 3650
Display wallet contents (wallet password is not required):
orapki wallet display \
-wallet "/app/oracle/staging_area/TLS_poc/wallet"
Export certificate:
orapki wallet export \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-dn "CN=wayland.swgalaxy" \
-cert /app/oracle/staging_area/TLS_poc/exports/wayland.swgalaxy.crt
Exchange certificates between server and client
Load client certificate into server wallet as trusted certificate:
orapki wallet add \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-trusted_cert -cert /app/oracle/staging_area/TLS_poc/exports/wayland.swgalaxy.crt
Load server certificate into client wallet as trusted certificate:
orapki wallet add \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-trusted_cert -cert /app/oracle/staging_area/TLS_poc/exports/togoria.swgalaxy.crt
Server side (togoria)
It is not possible to use a custom
TNS_ADMINfor the listener.sqlnet.oraandlistener.orashound be placed under$(orabasehome)/network/adminfor a read-onlyORACLE_HOMEor under$ORACLE_HOME/network/adminfor a read-writeORACLE_HOME
File sqlnet.ora:
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /app/oracle/staging_area/TLS_poc/wallet)
)
)
SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ)
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)
File listener.ora:
SSL_CLIENT_AUTHENTICATION = FALSE
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /app/oracle/staging_area/TLS_poc/wallet)
)
)
LISTENER_SECURE =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = togoria.swgalaxy)(PORT = 24000))
)
)
Start listener:
lsnrctl start LISTENER_SECURE
Register listener in database:
alter system set local_listener="(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = togoria.swgalaxy)(PORT = 24000))
)
)"
scope=both sid='*';
alter system register;
Client network configuration
export TNS_ADMIN=/app/oracle/staging_area/TLS_poc/tnsadmin
File $TNS_ADMIN/sqlnet.ora:
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /app/oracle/staging_area/TLS_poc/wallet)
)
)
SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS)
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)
File $TNS_ADMIN/tnsnames.ora:
MAUL_24000=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCPS)(HOST=togoria.swgalaxy)(PORT=24000)
)
(CONNECT_DATA=
(SERVICE_NAME=MAUL)
)
)
Check TCPS connection:
connect vpl/*****@MAUL_24000
select SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') from dual;
Setup 2: use certificates signed by a CA Root
Stop the listener:
lsnrctl stop LISTENER_SECURE
Remove trusted/user certificates and certificate requests on server side.
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-trusted_cert \
-alias 'CN=togoria.swgalaxy'
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-trusted_cert \
-alias 'CN=wayland.swgalaxy'
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-user_cert \
-dn 'CN=togoria.swgalaxy'
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-cert_req \
-dn 'CN=togoria.swgalaxy'
Remove trusted/user certificates and certificate requests on client side.
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-trusted_cert \
-alias 'CN=togoria.swgalaxy'
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-trusted_cert \
-alias 'CN=wayland.swgalaxy'
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-user_cert \
-dn 'CN=wayland.swgalaxy'
orapki wallet remove \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-cert_req \
-dn 'CN=wayland.swgalaxy'
Check if wallets are empty client/server side.
orapki wallet display \
-wallet "/app/oracle/staging_area/TLS_poc/wallet"
We will use certificates signed by the same CA Root for the client and for the server.
Create an export file using the server certificate, server private key and CA Root certificate:
openssl pkcs12 -export \
-in /app/oracle/staging_area/TLS_poc/openssl_files/togoria.swgalaxy.crt \
-inkey /app/oracle/staging_area/TLS_poc/openssl_files/togoria.swgalaxy.key \
-certfile /app/oracle/staging_area/TLS_poc/openssl_files/rootCA.pem \
-out /app/oracle/staging_area/TLS_poc/openssl_files/togoria.swgalaxy.p12
Import into Oracle wallet:
orapki wallet import_pkcs12 \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "C0mpl1cated#Ph|rase" \
-pkcs12file /app/oracle/staging_area/TLS_poc/openssl_files/togoria.swgalaxy.p12
Server certificate will be imported as user certificate and CA Root certificate will be imported as trusted certificate.
Perform the same certificate export-import operation client side:
openssl pkcs12 -export \
-in /app/oracle/staging_area/TLS_poc/openssl_files/wayland.swgalaxy.crt \
-inkey /app/oracle/staging_area/TLS_poc/openssl_files/wayland.swgalaxy.key \
-certfile /app/oracle/staging_area/TLS_poc/openssl_files/rootCA.pem \
-out /app/oracle/staging_area/TLS_poc/openssl_files/wayland.swgalaxy.p12
orapki wallet import_pkcs12 \
-wallet "/app/oracle/staging_area/TLS_poc/wallet" \
-pwd "Dont1Try@toGuessth1s" \
-pkcs12file /app/oracle/staging_area/TLS_poc/openssl_files/wayland.swgalaxy.p12
Start the listener:
lsnrctl start LISTENER_SECURE