Driver uses the openssl crate for TLS functionality.
It was chosen because rustls doesn't support certificates for ip addresses (see issue), which is a common use case for Scylla.

Enabling feature

openssl is not a pure Rust library so you need enable a feature and install the proper package.

To enable the tls feature add in Cargo.toml:

scylla = { version = "0.3.1", features = ["ssl"] }
openssl = "0.10.32"

Then install the package with openssl:

  • Debian/Ubuntu:
    apt install libssl-dev pkg-config
  • Fedora:
    dnf install openssl-devel
  • Arch:
    pacman -S openssl pkg-config

Using TLS

To use tls you will have to create an openssl SslContext and pass it to SessionBuilder

For example, if database certificate is in the file ca.crt:

fn main() {
extern crate scylla;
extern crate openssl;
use scylla::{Session, SessionBuilder};
use openssl::ssl::{SslContextBuilder, SslMethod, SslVerifyMode};
use std::path::PathBuf;

use std::error::Error;
async fn check_only_compiles() -> Result<(), Box<dyn Error>> {
let mut context_builder = SslContextBuilder::new(SslMethod::tls())?;

let session: Session = SessionBuilder::new()
    .known_node("") // The the port is now 9142


See the full example for more details