TLS y certificados

La PKI que crea el primer nodo, TLS en el puerto de clientes y TLS mutuo entre nodos.

TeselaDB cifra todo el tráfico desde el primer arranque, con su propia implementación de TLS 1.3 y X.509.

Requisitos

  • Para usar tus propios certificados, sus ficheros PEM en cada nodo.
  • Para rotarlos, acceso a teseladb admin en el nodo.

La PKI del clúster

El primer nodo crea una autoridad de certificación (pki/ca.pem) y su certificado (pki/node.pem). Cada nodo que entra con un token recibe un certificado firmado por esa CA. Los nodos solo se comunican entre sí con TLS 1.3 y certificado en los dos extremos: un nodo sin certificado de la CA no puede conectarse al clúster.

Puerto de clientes

El puerto de clientes exige TLS (--tlsMode requireTLS por defecto) y acepta TLS 1.2 y 1.3. Para usar en ese puerto tus propios certificados, por ejemplo los que firma tu CA corporativa, pasas a teseladb start las mismas opciones de TLS que usa MongoDB:

Shell
teseladb start --tlsCertificateKeyFile /etc/teseladb/server.pem --tlsCAFile /etc/teseladb/ca.pem

Con --tlsCAFile, el nodo pide certificado de cliente; --tlsAllowConnectionsWithoutCertificates deja entrar a los clientes sin él. --tlsCRLFile rechaza los certificados revocados.

Rotar certificados

Shell
teseladb admin cert rotate

o db.adminCommand({ rotateCertificates: 1 }) para volver a cargar los ficheros configurados. Ninguno de los dos reinicia el nodo.

Comprobar

openssl s_client -connect node-01:27017 -CAfile ca.pem muestra el protocolo y el certificado que presenta el nodo en el puerto de clientes.

Problemas frecuentes

  • Un nodo no entra en el clúster porque su certificado no lo firma la CA del clúster. Entre nodos solo vale esa CA.
  • Los clientes sin certificado no entran cuando arrancas con --tlsCAFile. Añade --tlsAllowConnectionsWithoutCertificates si no quieres pedírselo.

Ver también