Connect to SingleStore using TLS/SSL
On this page
Enable SSL/TLS for a Connection
Most client connections are TLS/SSL-enabled by default, even if no parameters are specified.
-
Use a client side flag, such as
--ssl-mode=REQUIREDin the MySQL/SingleStore clients. -
Use a user created with
REQUIRE SSL, which enforces SSL on the server side.
Certificate-Based Authentication
For certificate-based authentication:
-
Specify a CA using the ssl_
ca_ for_ client_ cert engine variable in memsql..cnf The client certificate is verified using this CA. -
Create a database user with one of the following options in the
CREATE USERstatement to require certificate-based authentication:-
REQUIRE X509: The user can connect only if the client presents a valid TLS client certificate that is not expired and chains to the CA bundle configured on the server.Connections that do not provide a valid certificate are rejected. For example: CREATE USER 's2user'@'%' REQUIRE X509; -
REQUIRE SUBJECT '<subject-dn-string>': In addition to extendingREQUIRE X509,REQUIRE SUBJECTenforces that theSubject DNin the client certificate must exactly match the configured value.This option verifies both trust (via certificate chaining to the CA) and identity (via the Subject DNstring).CREATE USER 's2user'@'%' REQUIRE SUBJECT '/CN=s2user/O=example/C=US';Note: While running
CREATE USERorALTER USER, theSubjectmust be specified in OpenSSL “oneline” format.The fields CN,O,C,ST,L, etc., must be separated by a /.
Users configured with
REQUIRE X509orREQUIRE SUBJECTcan authenticate using their TLS client certificate instead of a database password.This reduces dependency on shared secrets and provides stronger, certificate‑based identity validation. Refer to CREATE USER for related information. -
-
Specify the client certificate and client key while connecting using the
--ssl-certand--ssl-keyclient options, respectively.
The VERIFY_ option is not required to use TLS/SSL.
Refer to SSL Secure Connections for more information.
Refer to The SingleStore JDBC Driver for details on how to connect using JDBC.
Generate Client Certificates for SingleStore mTLS Connection
Create a client certificate/key pair signed by the CA, and use these files with SingleStore’s --ssl-cert and --ssl-key options for secure mutual TLS (mTLS) authentication.
The CA certificate (ca-cert.) must also be trusted by the SingleStore cluster configuration for client authentication.
Prerequisites
Install OpenSSL.
sudo apt-get install openssl -y
Create a Certificate Authority (CA)
If you already have a CA certificate from your organization or another trusted source, skip this step and use the existing CA to sign the client certificate.
-
Generate a CA private key:
openssl genrsa -out ca-key.pem 4096 -
Generate a CA certificate:
openssl req -x509 -new -nodes -key ca-key.pem -sha256 -days 3650 -out ca-cert.pem \-subj"/C=US/ST=CA/L=SanFrancisco/O=ExampleOrg/OU=IT/CN=Example-CA"
You now have:
-
ca-key.: The private key for your CA.pem -
ca-cert.: The public CA certificate.pem
Keep the CA key (ca-key.) private and secure.
Refer to Certificate-Based Authentication - step 1 for information on how to configure a CA for your cluster.
Create the Client Certificate and Key
-
Generate the client private key and certificate signing request (CSR) as follows:
openssl req -newkey rsa:2048 -nodes -keyout client-key.pem -out client-req.pem \-subj"/C=US/ST=CA/L=SanFrancisco/O=ExampleOrg/OU=Client/CN=client.example.com" -
Create a client certificate signed by the CA.
The following command uses the CA’s certificate and key to sign the client’s certificate. openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem \-CAcreateserial -out client-cert.pem -days 365 -sha256
You now have:
-
client-key.: Client private key.pem -
client-cert.: Client certificate signed by the CA.pem
Verify the Certificates
Run the following command to verify that the client certificate is properly signed by the CA:
openssl verify -CAfile ca-cert.pem client-cert.pem
An output similar to the following that the client certificate is properly signed by the CA:
client-cert.pem: OK
Use the Certificates
When connecting to SingleStore with mTLS, specify the client certificate and key.
mysql -u user \--ssl-ca=/path/to/ca.pem \--tls-version=TLSv1.2 \--ssl-cert=/path/to/client-cert.pem \--ssl-key=/path/to/client-key.pem
Ensure the SingleStore server is configured with server certificate and key before running this command.
Last modified: March 16, 2026