Skip to content

Tenzir supports Transport Layer Security (TLS) for encrypting network connections. You can configure TLS settings centrally in tenzir.yaml so they apply to all compatible operators, or override them per-operator as needed.

Instead of passing TLS options to each operator individually, configure them once under tenzir.tls in your tenzir.yaml:

tenzir.yaml
tenzir:
tls:
tls-min-version: "1.2"
tls-ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"
cacert: "/etc/ssl/certs/ca-certificates.crt"

These settings apply automatically to operators like from_http, load_tcp, save_tcp, to_opensearch, from_opensearch, to_splunk, save_email, and to_fluent_bit.

OptionDescription
enableEnable TLS on all operators that support it
skip-peer-verificationDisable certificate verification (not recommended for production)
cacertPath to a CA certificate bundle for server verification
certfilePath to a client certificate file
keyfilePath to a client private key file
tls-min-versionMinimum TLS protocol version: "1.0", "1.1", "1.2", or "1.3"
tls-ciphersOpenSSL cipher list string

Arguments passed directly to operators always take precedence over node-level settings. This lets you override specific connections when needed:

// Uses node-level TLS settings
from_http "https://api.example.com/data"
// Overrides with a custom certificate
from_http "https://internal.example.com/data", tls={cacert: "/path/to/internal-ca.crt"}

For server-mode operators, you can require clients to present valid certificates. This enables mutual TLS authentication where both sides verify each other’s identity.

tenzir.yaml
tenzir:
tls:
certfile: "/etc/tenzir/server.crt"
keyfile: "/etc/tenzir/server.key"
tls-client-ca: "/etc/tenzir/client-ca.crt"
tls-require-client-cert: true
OptionDescription
tls-client-caPath to a CA certificate for validating client certificates
tls-require-client-certRequire clients to present valid certificates signed by the client CA

When tls-require-client-cert is enabled, connections from clients without valid certificates are rejected.

When connecting a node to the Tenzir Platform, you can configure TLS settings specifically for this connection:

tenzir.yaml
plugins:
platform:
tls-min-version: "1.2"
tls-ciphers: "HIGH:!aNULL:!MD5"

If not specified, these settings fall back to the node-level tenzir.tls settings.

For testing purposes, generate a certificate from a local CA:

Terminal window
uv run --with trustme python -m trustme

Test a TLS connection using OpenSSL:

Terminal window
openssl s_client -connect 127.0.0.1:443

This shows the certificate chain and connection details, helping you diagnose TLS configuration issues.

Last updated: