Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Interno
/ / / / /

Usa X.509 Certificate para la autenticación de membresía con MongoDB autogestionado

MongoDB admite autenticación con certificado X.509 para uso con un Conexión TLS/SSL. Los nodos de un clúster y los nodos de un set de réplicas pueden utilizar certificados x.509 para verificar su membresía al clúster o al set de réplicas en lugar de archivos de llaves. La autenticación de membresía es un proceso interno.

Nota

MongoDB deshabilita el soporte para el cifrado TLS 1.0 en sistemas donde TLS 1.1+ está disponible.

Habilitar la autenticación interna también habilita el Control de acceso basado en roles en implementaciones autogestionadas. Los clientes deben autenticarse como usuario para poder conectarse y realizar operaciones en la implementación.

Importante

Una descripción completa de TLS/SSL, los certificados PKI (Infraestructura de clave pública), en particular los certificados X.509, y la Autoridad de certificación está fuera del alcance de este documento. Este tutorial asume que se tiene un conocimiento previo de TLS/SSL y también acceso a certificados X.509 válidos.

Nota

Debes tener certificados X.509 válidos.

Si especificas --tlsAllowInvalidCertificates o net.tls.allowInvalidCertificates: true, un certificado inválido es suficiente solo para establecer una conexión TLS, pero es insuficiente para la autenticación.

Utiliza los certificados de miembro para verificar la membresía a un clúster fragmentado o a un set de réplicas. Los certificados de los nodos se almacenan en net.tls.clusterFile y net.tls.certificateKeyFile. Requisitos del certificado de nodo:

  • Una única Autoridad de Certificación (CA) debe emitir todos los certificados x.509 para los nodos de un clúster o un set de réplicas.

  • El certificado x.509 no debe estar caducado.

    Nota

    mongod / mongos genera un registro de advertencia en la conexión si el certificado X.509 presentado caduca dentro de 30 días a partir de la hora del sistema host mongod/mongos.

  • El Nombre Distinguido (DN), que se encuentra en el subject del certificado de nodo, debe especificar un valor no vacío para al menos uno de los siguientes atributos:

    • la organización (O)

    • la Unidad Organizativa (OU)

    • El componente del dominio (DC)

  • En implementaciones multi-cluster, cada clúster debe usar un certificado de nodo X.509 diferente. Cada certificado debe tener valores únicos en los campos del Nombre Distinguido (ND) O, OU y DC.

    Si dos clústeres tienen certificados con los mismos valores de nombre distinguido, un servidor comprometido en un clúster puede autenticarse como nodo del otro.

  • Cada certificado de nodo de clúster debe tener Os, OUs y DCs idénticos en sus certificados net.tls.clusterFile y net.tls.certificateKeyFile. Esto también se aplica al valor tlsX509ClusterAuthDNOverride, si está configurado. El orden de los atributos no importa.

    Aquí tienes un ejemplo. Los dos DNde abajo tienen especificaciones coincidentes para O y OU, y DC no está especificado.

    CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US
    C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2

    El siguiente ejemplo es incorrecto porque los DNs no coinciden. Un DN tiene dos especificaciones de OU y el otro tiene solo una especificación de OU.

    CN=host1,OU=Dept1,OU=Sales,O=MongoDB
    CN=host2,OU=Dept1,O=MongoDB
  • El Nombre Común (CN) o una de las entradas de Nombre Alternativo del Sujeto (SAN) deben coincidir con el nombre del servidor para los demás nodos del clúster. A partir de MongoDB 4.2, al comparar SANs, MongoDB puede comparar nombres DNS o direcciones IP. En versiones anteriores, MongoDB solo compara nombres DNS.

    Por ejemplo, los certificados de un clúster podrían tener los siguientes subjects:

    subject= CN=<myhostname1>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname2>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname3>,OU=Dept1,O=MongoDB,ST=NY,C=US
  • Si el certificado utilizado como el certificateKeyFile incluye extendedKeyUsage, el valor debe incluir tanto clientAuth (“Autenticación de cliente web TLS”) como serverAuth (“Autenticación de servidor web TLS”).

    extendedKeyUsage = clientAuth, serverAuth
  • Si el certificado utilizado como clusterFile incluye extendedKeyUsage, el valor debe incluir clientAuth.

    extendedKeyUsage = clientAuth

Excepto durante los procedimientos de actualización progresiva, cada componente de un conjunto de réplicas o cluster fragmentado debe usar la misma configuración de --clusterAuthMode para garantizar que pueda conectarse de manera segura con todos los demás componentes en la implementación.

Para las implementaciones de set de réplicas, esto incluye todos los mongod nodos del set de réplicas.

Para implementaciones de clúster, esto incluye todas las instancias de mongod o mongos.

Nota

mongod y mongos se enlazan a localhost por defecto. Si los miembros de la implementación se ejecutan en hosts diferentes o si se desea que clientes remotos se conecten a la implementación, se debe especificar --bind_ip o net.bindIp.

Nota

Los procedimientos en esta sección usan la configuración/opción tls. Para procedimientos que usen los alias obsoletos ssl, consulta Usar opciones de línea de comandos (ssl).

Los ajustes/opciones de tls proporcionan una funcionalidad idéntica a las opciones de ssl ya que MongoDB siempre ha admitido TLS 1.0 y posteriores.

mongod --replSet <name> --tlsMode requireTLS --clusterAuthMode x509 --tlsClusterFile <path to membership certificate and key PEM file> --tlsCertificateKeyFile <path to TLS/SSL certificate and key file> --sslCAFile <path to root CA file> --bind_ip localhost,<hostname(s)|ip address(es)>

Importante

Para utilizar la autenticación X.509, se debe especificar --tlsCAFile o net.tls.CAFile, a menos que estés utilizando --tlsCertificateSelector o --net.tls.certificateSelector.

Incluya cualquier opción adicional, TLS/SSL o de otro tipo, que se requiera para su configuración específica. Para

security:
clusterAuthMode: x509
net:
tls:
mode: requireTLS
certificateKeyFile: <path to its TLS/SSL certificate and key file>
CAFile: <path to root CA PEM file to verify received certificate>
clusterFile: <path to its certificate key file for membership authentication>
bindIp: localhost,<hostname(s)|ip address(es)>

Importante

Para utilizar la autenticación X.509, se debe especificar --tlsCAFile o net.tls.CAFile, a menos que estés utilizando --tlsCertificateSelector o --net.tls.certificateSelector.

Incluye cualquier opción adicional, ya sea TLS/SSL u otra, que sea necesaria para tu configuración específica.

Para obtener más información, consulta Configurar mongod y mongos para TLS/SSL.

Nota

Los procedimientos en esta sección utilizan la configuración/opción obsoleta ssl. Para los procedimientos que utilizan alias de tls, consulte Usar opciones de línea de comandos (tls).

Los ajustes/opciones de tls proporcionan una funcionalidad idéntica a las opciones de ssl ya que MongoDB siempre ha admitido TLS 1.0 y posteriores.

Para especificar el certificado X.509 para la autenticación interna de nodos del clúster, añade las opciones TLS/SSL adicionales --clusterAuthMode y --sslClusterFile, como en el siguiente ejemplo para un nodo de un set de réplicas:

mongod --replSet <name> --sslMode requireSSL --clusterAuthMode x509 --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)>

Importante

Para utilizar la autenticación X.509, se debe especificar --tlsCAFile o net.tls.CAFile, a menos que estés utilizando --tlsCertificateSelector o --net.tls.certificateSelector.

Incluye cualquier opción adicional, ya sea TLS/SSL u otra, que sea necesaria para tu configuración específica.

security:
clusterAuthMode: x509
net:
ssl:
mode: requireSSL
PEMKeyFile: <path to TLS/SSL certificate and key PEM file>
CAFile: <path to root CA PEM file>
clusterFile: <path to X.509 membership certificate and key PEM file>
bindIp: localhost,<hostname(s)|ip address(es)>

Importante

Para utilizar la autenticación X.509, se debe especificar --tlsCAFile o net.tls.CAFile, a menos que estés utilizando --tlsCertificateSelector o --net.tls.certificateSelector.

Incluye cualquier opción adicional, ya sea TLS/SSL u otra, que sea necesaria para tu configuración específica.

Para obtener más información, consulta Configurar mongod y mongos para TLS/SSL.

Para actualizar de la autenticación interna de keyfile a la autenticación interna de X.509, consulta Actualizar MongoDB autogestionado de autenticación Keyfile a autenticación X.509.

Para realizar una actualización gradual de los certificados a nuevos certificados con DN diferentes, consulte Actualización gradual de los certificados X.509 que contienen un nuevo nombre distinguido en clústeres autogestionados.

Volver

Rotar claves de clúster particionados

En esta página