Switching the Cryptographic Provider for Oracle Database 19c

This section explains how to switch an existing Oracle Database 19c environment from the default legacy cryptographic provider, Dell BSAFE Crypto-C Micro Edition Suite (MES), to the next-generation provider, OpenSSL.

Understanding the Impacts of Switching Cryptographic Providers

The following table shows how various capabilities, encryption algorithms, and parameters in Oracle Database 19c differ when OpenSSL or MES as used as cryptographic providers.

Capability OpenSSL - Next-Generation Provider MES - Legacy Provider (Default)
Supported TLS versions TLS 1.2, TLS 1.3 TLS 1.0, TLS 1.1, TLS 1.2
Supported FIPS standard FIPS 140-3 FIPS 140-2
FIPS configuration parameters FIPS_140 and FIPS_VERSION in fips.ora SSLFIPS_140, SQLNET.FIPS_140, and DBFIPS_140
Supported post-quantum cryptography ML-KEM, ML-DSA, and SLH-DSA Not supported
Supported TLS 1.3 cipher suites TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_AES_128_CCM_SHA256, TLS_CHACHA20_POLY1305_SHA256 (non-FIPS mode only) Not supported
Recommended TLS 1.2 ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Native Network Encryption (NNE) encryption algorithms AES only, or 3DES168 in non-FIPS mode only AES, 3DES, DES, and RC4
NNE checksum SHA256, SHA384, SHA512; SHA1 checksum-only in non-FIPS mode; MD5 is deprecated SHA256, SHA384, SHA512, MD5, and SHA1
3DES encryption Supported but deprecated in non-FIPS mode; desupported in FIPS 140-3 Deprecated but supported
DES, RC4, RC2, RC5 Not supported Deprecated but supported
SEED and ARIA SEED is desupported; ARIA is supported in non-FIPS mode Supported
SHA-1 and MD5 signing Not supported Deprecated but supported
TLS_VERSION minimum syntax, such as TLSv1.2+ Supported Not supported
TLS_KEY_EXCHANGE_GROUPS Supported; default is hybrid,ec,ml-kem Not supported
Supported certificate algorithms RSA, ECC, and ML-DSA RSA and ECC
Recommended ECC curves secp521r1, secp384r1, secp256r1 secp521r1, secp384r1, secp256r1
Recommended RSA key length 2048 bits or greater; NIST recommends 3072 bits after 2030 2048 or 4096 bits
Certificate CN maximum length 64 characters No specific limit
Local Single Sign-On (LSSO) wallets Supported Limited

TLS Protocol Versions and Cipher Suites

The TLS protocol versions available to Oracle Database 19c depend on the active cryptographic provider.

When using OpenSSL (next-generation provider), Oracle Database supports only TLS 1.2 and TLS 1.3. SSLv3, TLS 1.0, and TLS 1.1 are not available in next-generation provider mode regardless of FIPS configuration.

When using Dell BSAFE Crypto-C Micro Edition Suite, or MES (legacy provider), Oracle Database supports TLS 1.0, TLS 1.1, and TLS 1.2. TLS 1.0 and TLS 1.1 are not recommended and are not available when FIPS 140-2 mode is enabled. The legacy provider does not support TLS 1.3.

Oracle recommends using TLS 1.2 or TLS 1.3 for all new deployments. TLS 1.3 is available only with the next-generation provider.

Tip: You can use TLS_DISABLE_VERSION to disable protocol versions that you do not want clients or servers to negotiate.

The following table summarizes the available TLS versions depending on the cryptographic provider in Oracle Database 19c.

TLS Version OpenSSL - Next-Generation Provider OpenSSL - Next-Generation Provider in FIPS 140-3 mode MES - Legacy Provider (Default) MES - Legacy Provider in FIPS 140-2 mode
SSLv3 Not supported Not supported Supported (not recommended) Not supported
TLS 1.0 Not supported Not supported Supported (not recommended) Not supported
TLS 1.1 Not supported Not supported Supported (not recommended) Not supported
TLS 1.2 Supported Supported Supported Supported
TLS 1.3 Supported Supported Not supported Not supported

TLS 1.3 Cipher Suites

The following cipher suites are available when TLS 1.3 is enabled. TLS 1.3 can only be enabled when OpenSSL is the cryptographic provider.

TLS 1.3 cipher suites use Authenticated Encryption with Associated Data (AEAD) constructions exclusively. Non-AEAD cipher suites, such as those using CBC mode, are not available in TLS 1.3.

TLS 1.2 Cipher Suites

The following TLS 1.2 cipher suites are approved for both OpenSSL and MES:

All other TLS 1.2 cipher suites are deprecated and should not be used.

Pre-conversion of Cryptographic Providers

Before switching from MES to OpenSSL, inventory the environment and resolve incompatibilities. Document each exception, its owner, and its removal plan.

Inventory the current environment

Confirm dependencies and remediate incompatibilities

Update FIPS configuration parameters

Remove the three legacy FIPS settings:

Add the two next-generation provider FIPS settings in fips.ora:

FIPS_140 = TRUE
FIPS_VERSION = FIPS140-3

Switching Between Cryptographic Providers

Oracle Database 19c supports two cryptographic providers: OpenSSL (next-generation provider) and Dell BSAFE Crypto-C Micro Edition Suite, or MES (legacy provider). The legacy provider is the default provider and is active unless explicitly changed. Only one provider can be active at a time.

Use the set_crypto_provider.py script to switch between providers.

To switch from MES (legacy provider) to OpenSSL (next-generation provider):

  1. Ensure you have performed the pre-conversion steps Pre-conversion of Cryptographic Providers.
  2. Run the following:

    python $ORACLE_HOME/bin/set_crypto_provider.py --provider openssl

    Note: Switching providers does not modify wallet contents or certificate stores. Existing wallets remain valid, but certificates signed with desupported algorithms, such as SHA-1 or MD5, are not usable for TLS authentication with the next-generation provider.

  3. After switching providers, restart the database instance and Oracle Net listener for the change to take effect.

  4. Verify that FIPS 140-3 mode is active by checking the database alert log.

  5. Test all TLS connections, encryption operations, and certificate-based authentication.

Note: This switch cannot be performed incrementally. You must resolve all incompatibilities before switching providers because the switch is an all-or-nothing operation for the entire database instance.

To switch back from OpenSSL (next-generation provider) to MES (legacy provider)

If issues arise after switching to OpenSSL, you can revert back to MES:

  1. Switch back by running the following:

    python $ORACLE_HOME/bin/set_crypto_provider.py --provider mes
  2. Restore the legacy provider FIPS settings:

    • SSLFIPS_140=true in fips.ora
    • SQLNET.FIPS_140=TRUE in sqlnet.ora
    • DBFIPS_140=true initialization parameter
  3. Restart the database instance and Oracle Net listener.

Note: PQC certificates that were created while OpenSSL was active will not function with MES.

Verify the Active Cryptographic Provider:

Run the following to determine the current cryptographic provider:

python $ORACLE_HOME/bin/set_crypto_provider.py --status

Related Topics