Communication between all or some nodes can be encrypted. The controlling parameter is
Once enabled, all communication between the nodes is transmitted over TLS/SSL. The libraries used by Scylla for OpenSSL are FIPS 140-2 certified.
To build a self-signed certificate chain, see generating a self-signed certificate chain using openssl.
Available options are:
internode_encryption: can be one of the following:
none: (default) no traffic is encrypted.
all: encrypts all traffic
dc: encrypts the traffic between the data centers.
rack: encrypts the traffic between the racks.
certificate - A PEM format certificate, either self-signed, or provided by a certificate authority (CA).
keyfile - The corresponding PEM format key for the certificate.
truststore - Optional path to a PEM format certificate store of trusted CA:s. If not provided, Scylla will attempt to use the system trust store to authenticate certificates.
require_client_auth: Set to True to require client side authorization. False by default.
priority_string: specify session’s handshake algorithms and options to use. By default there are none. For information on priority strings, refer to this guide.
server_encryption_options: internode_encryption: <none|rack|dc|all> certificate: <path to PEM encoded certificate file> keyfile: <path to PEM encoded key for certificate> truststore: <optional path to PEM encoded trust store>
Restart Scylla node to apply the changes.
sudo systemctl restart scylla-server
sudo service scylla-server restart
docker exec -it some-scylla supervisorctl restart scylla
(without restarting some-scylla container)
client_encryption_options is enabled
(by being set to something other than none), the SSL / TLS certificates and key files specified in scylla.yaml
will continue to be monitored and reloaded if modified on disk.
When the files are updated, Scylla reloads them and uses them for subsequent connections.