Upload TLS Certificate

Transport Layer Security (TLS) is a cryptographic protocol that uses digital certificate chains to enable secure communication between client and server. A certificate chain consists of multiple, related certificates that are linked together using digital signatures. Each certificate in the chain is digitally signed by the previous certificate in the chain. The certificate chain can contain any number of intermediate certificates between the root and server certificates. The root certificate in the chain can be self-signed or issued by a trusted Certificate Authority (CA).

Certificate chain

TLS certificates are used to encrypt communication between the local client and EXAoperation and between database clients and the database. If you have a self-signed or Certificate Authority (CA)-signed TLS certificate, you can upload it through EXAoperation or XML-RPC. You need to upload the complete certificate chain, not just the server certificate.

This section explains how to create and upload a TLS certificate chain in EXAoperation.

You need to upload the complete TLS certificate chain in EXAoperation.

You can only have one TLS certificate active at a time. Uploading a new certificate overwrites a previous TLS certificate. It is not possible to delete a certificate without replacing it.

If you are unsure about how to generate or use TLS certificates, contact your system administrator.

Prerequisites

  • A self-signed or CA-signed TLS certificate using either RSA or ECC encryption algorithms: 
    • If you are using RSA with a version of Exasol earlier than 7.1.2, the maximum key length is 2048 bits. With Exasol 7.1.2 or later, the maximum key length is 8192 bits.
    • If you are using a CA-signed certificate, correct host names are required in it.
  • Root and intermediate certificates that are part of the certificate chain

  • Private key file for the server certificate

      The private key must not be encrypted with a password.

Create Certificate Chain

A certificate chain is simply a text file containing all the certificates. However, the ordering of the certificates is important. Certificate chains begin with the server certificate and end with the highest-level CA certificate.

In the following example there are just two certificates, so the server certificate can simply be copied to the certificate chain file and the CA certificate can be appended afterwards.

# Create server cert chain
> cat server_cert.pem > cert_chain.pem; cat ca_cert.pem >> cert_chain.pem

Now, cert_chain.pem contains the full certificate chain (i.e. two certificates), so it can be uploaded to Exasol along with the server certificate's private key.

Upload Certificate Chain

In EXAoperation

  1. Log in to EXAoperation as an admin.
  2. Click the TLS Certificate tab under Configuration > Access Management.
  3. Upload the certificate chain file and the private key file.
  4. Click Upload Key button.
  5. Go to ServicesEXAoperation and click the Restart button to restart EXAoperation. Restarting EXAoperation does not impact the database's availability.
    After restarting, EXAoperation uses an encrypted TLS connection.

If you upload a TLS certificate, the database automatically uses the same certificate for TLS connections between the database and other clients after a database restart. See Enable TLS Certificate for more information.

Through XML-RPC

  1. Run the following commands to import the XML-RPC packages:
  2. from xmlrpc.client import ServerProxy
    from xmlrpc.client import ServerProxy as xmlrpc

  3. Run the following command to create a connection with your Exasol cluster:
  4. import ssl
    server = ServerProxy ('https://user:password@<IP_Address>/cluster1', context=ssl._create_unverified_context (), allow_none = True)

  5. Run the following command to upload a TLS certificate chain and private key. Replace the absolute paths and file names with your own.
  6. cert = open('/absolute/path/to/cert_chain.pem', 'r').read()
    key = open('/absolute/path/to/key.pem', 'r').read()

    server.uploadTlsFiles(cert,key)

  7. Restart EXAoperation. Restarting EXAoperation does not impact the database's availability.
  8. server.restartEXAoperation('<node>')

    After restarting, EXAoperation uses an encrypted TLS connection.

If you upload a TLS certificate, the database automatically uses the same certificate for TLS connections between the database and other clients after a database restart. See Enable TLS Certificate for more information.

Enable TLS Certificate

All Exasol 7.1 drivers use TLS as the default cryptographic protocol for all connections. By default, each Exasol database uses a self-signed certificate for TLS encryption. If your database uses the default certificate or another self-signed certificate, you may need to update your connection strings to connect to the database. For more details, see Exasol 7.1 Connection Security Changes.

To use the same TLS certificate that you uploaded to EXAoperation for communication between database clients and the database, do the following:

Restarting the database requires a short downtime.

Exasol automatically adds the certificate fingerprint to the database connection string in EXAoperation. This provides you an option to use fingerprints for the clients where certificate verification is not possible.

The fingerprint is updated when you upload a new TLS certificate and restart the database. In this case, you should update the connection string for all incoming connections. All connection requests with invalid fingerprints are rejected.