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 adminen 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:
teseladb start --tlsCertificateKeyFile /etc/teseladb/server.pem --tlsCAFile /etc/teseladb/ca.pemCon --tlsCAFile, el nodo pide certificado de cliente; --tlsAllowConnectionsWithoutCertificates deja entrar a los
clientes sin él. --tlsCRLFile rechaza los certificados revocados.
Rotar certificados
teseladb admin cert rotateo 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--tlsAllowConnectionsWithoutCertificatessi no quieres pedírselo.
Ver también
- Autenticación, con el usuario de un certificado de cliente.
- Puertos.