Para actualizar los clústeres que están utilizando actualmente autenticación de archivo clave a la autenticación X.509, utiliza los siguientes procesos de actualización continua.
Nota
MongoDB deshabilita el soporte para el cifrado TLS 1.0 en sistemas donde TLS 1.1+ está disponible.
Procedimientos de actualización (usando tls Opciones)
Nota
MongoDB proporciona configuraciones net.tls (y opciones de línea de comandos --tls) que corresponden a las configuraciones net.ssl (y opciones de línea de comandos --ssl). La nueva configuración de tls proporciona una funcionalidad idéntica a la configuración de ssl, ya que MongoDB siempre ha sido compatible con TLS 1.0 y versiones posteriores.
Los procedimientos de esta sección utilizan los tls ajustes/opciones. Para los procedimientos que utilizan las configuraciones/opciones ssl, consulta Procedimientos de actualización (utilizando las opciones ssl).
Actualizar (usando tls opciones) clústeres usando TLS/SSL y archivo clave
Nota
El procedimiento utiliza la configuración/opciones tls. Para los procedimientos que utilizan la configuración/opciones de ssl, consulta Clústeres que utilizan actualmente TLS/SSL (utilizando ssl opciones).
Para clústeres que emplean autenticación TLS/SSL y de archivos clave, para actualizar a la autenticación de clúster X.509, utiliza el siguiente proceso de actualización progresiva:
Para cada nodo de un clúster, agrega los siguientes ajustes al archivo de configuración y reinicia:
security.clusterAuthMode- Establecido a
sendKeyFile. Con este valor de configuración, cada nodo continúa enviando su keyfile para autenticarse como nodo. Sin embargo, cada nodo puede recibir ya sea un archivo de clave o un certificado X.509 de otros nodos para autenticar a esos nodos.
net.tls.clusterFile- Establézcalo en la ruta adecuada del archivo de clave del certificado del nodo para la autenticación de membresía. El
mongod/mongospresenta este archivo a otros nodos del clúster para identificarse como un nodo.
Incluye otras opciones TLS/SSL y cualquier otra opción según sea apropiado para tu configuración específica.
Por ejemplo:
net: tls: mode: requireTLS certificateKeyFile: /etc/ssl/mongodb.pem CAFile: /etc/ssl/caToValidateReceivedCertificates.pem clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem" security: clusterAuthMode: sendKeyFile keyFile: /my/securely/located/membershipkey replication: replSetName: myReplicaSet net: bindIp: localhost,mongodb0.example.net port: 27017 systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: dbPath: "/var/lib/mongodb" processManagement: fork: true Actualiza todos los nodos del clúster para incluir la
security.clusterAuthModey lanet.tls.clusterFileantes de continuar.Conéctese a cada nodo y utilice el comando
setParameterpara actualizar elclusterAuthModeasendX509. [1]db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } ) Con
sendX509, cada nodo envía sunet.tls.clusterFilepara autenticarse como miembro. Sin embargo, cada nodo puede recibir ya sea un keyfile o un certificado X.509 de otros miembros para autenticar a esos miembros.Actualiza todos los nodos del clúster a esta configuración antes de continuar.
Opcional, pero recomendado. Por último, para cada nodo del clúster, conéctese al nodo y utilice el comando
setParameterpara actualizar elclusterAuthModeax509para usar solo el certificado X.509 para autenticación. [1]db.adminCommand( { setParameter: 1, clusterAuthMode: "x509" } ) Después de actualizar todos los nodos, edita el archivo de configuración con la configuración X.509 adecuada para garantizar que, en reinicios posteriores, el clúster utilice la autenticación X.509. Por ejemplo:
net: tls: mode: requireTLS certificateKeyFile: /etc/ssl/mongodb.pem CAFile: /etc/ssl/caToValidateReceivedCertificates.pem clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem" security.clusterAuthMode: x509 replication: replSetName: myReplicaSet net: bindIp: localhost,mongodb0.example.net port: 27017 systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: dbPath: "/var/lib/mongodb" processManagement: fork: true
Tip
También se puede configurar mongod y mongos usando opciones de línea de comandos en lugar del archivo de configuración:
Para
mongod, consulta: ---tlsMode---tlsCertificateKeyFile---tlsCAFile---tlsClusterFile---clusterAuthModePara
mongos, consulta: ---tlsMode---tlsCertificateKeyFile---tlsCAFile---tlsClusterFile---clusterAuthMode
Actualizar (usando las opciones tls) clústeres que usan keyfile pero no TLS/SSL
Nota
El procedimiento utiliza las opciones tls. Para los procedimientos que utilizan la configuración/opciones de ssl, consulte Clústeres que actualmente no usan TLS/SSL (utilizando las opciones ssl).
Para clústeres que utilizan autenticación por archivo clave pero no TLS/SSL, para actualizar a la autenticación de membresía X.509 y conexiones TLS/SSL:
Para cada nodo de un clúster, agrega los siguientes ajustes al archivo de configuración y reinicia:
net.tls.mode- Establecer en
allowTLS. Este valor permite que el nodo acepte conexiones entrantes que utilicen TLS/SSL y también aquellas que no utilicen TLS/SSL. Sus conexiones salientes no utilizan TLS/SSL.
net.tls.certificateKeyFile- Establezca la ruta del archivo que contiene el certificado TLS/SSL y la clave. El
mongod/mongospresenta este archivo a sus clientes para establecer la identidad de la instancia. Necesario cuando se utiliza TLS/SSL.
net.tls.clusterFile- Establézcalo en la ruta adecuada del archivo de clave del certificado del nodo para la autenticación de membresía. El
mongod/mongospresenta este archivo a otros nodos del clúster para identificarse como un nodo.
net.tls.CAFile- Establecido en la ruta del archivo que contiene la cadena de certificados para verificar los certificados recibidos.
security.clusterAuthMode- Establecido a
sendKeyFile. Esto permite que cada nodo siga enviando su archivo clave para autenticarse como miembro. Sin embargo, cada nodo puede recibir ya sea un archivo de clave o un certificado X.509 de otros nodos para autenticar a esos nodos.
Incluye otras opciones TLS/SSL y cualquier otra opción según sea apropiado para tu configuración específica.
Por ejemplo:
net: tls: mode: allowTLS certificateKeyFile: /etc/ssl/mongodb.pem clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem" CAFile: /etc/ssl/caToValidateReceivedCertificates.pem security: clusterAuthMode: sendKeyFile keyFile: /my/securely/located/membershipkey replication: replSetName: myReplicaSet net: bindIp: localhost,mongodb0.example.net port: 27017 systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: dbPath: "/var/lib/mongodb" processManagement: fork: true Actualice todos los nodos del clúster para incluir
net.tls.mode,net.tls.certificateKeyFile,net.tls.clusterFileysecurity.clusterAuthMode.Conéctese a cada nodo y utilice el comando
setParameter[1] para:Actualizar el
tlsModeapreferSSL. Con eltlsModeconfigurado enpreferTLS, el nodo acepta tanto conexiones entrantes TLS/SSL como no TLS/no SSL, y sus conexiones salientes utilizan TLS/SSL.Actualiza el
clusterAuthModeasendX509. Con elclusterAuthModeconfigurado ensendX509, cada nodo envía sunet.tls.clusterFilepara autenticarse como nodo. Sin embargo, cada nodo continúa aceptando ya sea un archivo de claves o un certificado X.509 de otros nodos para autenticar a dichos nodos.
db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } ); db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } ); Actualiza todos los nodos del clúster a estos parámetros antes de continuar.
Después de la actualización de todos los nodos, edite el archivo de configuración con la configuración adecuada de TLS/SSL y X.509 para garantizar que, en reinicios posteriores, el clúster utilice la autenticación X.509.
net: tls: mode: preferTLS certificateKeyFile: /etc/ssl/mongodb.pem clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem" CAFile: /etc/ssl/caToValidateReceivedCertificates.pem security: clusterAuthMode: sendX509 replication: replSetName: myReplicaSet net: bindIp: localhost,mongodb0.example.net port: 27017 systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: dbPath: "/var/lib/mongodb" processManagement: fork: true Nota
En este punto,
Los nodos en el clúster usan conexiones TLS/SSL. Sin embargo, los nodos pueden aceptar conexiones que no sean TLS/SSL de aplicaciones cliente.
Los nodos envían sus certificados X.509 para la autenticación de membresía, pero pueden aceptar certificados X.509 o archivos de clave de otros nodos para verificar la membresía de esos nodos.
Para aplicar las conexiones TLS/SSL desde las aplicaciones cliente, así como aceptar solo X.509 para la autenticación de membresía, consulte el siguiente paso.
Opcional, pero recomendado. Actualiza todos los nodos para que usen solo
TLS/SSLconexiones y solo el certificado X.509 para la autenticación de membresía.Importante
Este requisito de conexión TLS/SSL se aplica a todas las conexiones; es decir, tanto con los clientes como con los nodos del clúster. Es decir, los clientes deben especificar conexiones TLS/SSL y presentar su archivo de clave de certificado al conectarse al clúster. Consulta Conectar con instancias de MongoDB que requieren certificados de cliente para obtener más información sobre la conexión con TLS/SSL. Consultar también Validar solo si un cliente presenta un certificado.
Actualiza el
net.tls.modearequireTLSysecurity.clusterAuthModeax509.Por ejemplo:
net: tls: mode: requireTLS certificateKeyFile: /etc/ssl/mongodb.pem clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem" CAFile: /etc/ssl/caToValidateReceivedCertificates.pem security: clusterAuthMode: x509 replication: replSetName: myReplicaSet net: bindIp: localhost,mongodb0.example.net port: 27017 systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: dbPath: "/var/lib/mongodb" processManagement: fork: true
Tip
También se puede configurar mongod y mongos usando opciones de línea de comandos en lugar del archivo de configuración:
Para
mongod, consulta: ---tlsMode---tlsCertificateKeyFile---tlsCAFile---tlsClusterFile---clusterAuthModePara
mongos, consulta: ---tlsMode---tlsCertificateKeyFile---tlsCAFile---tlsClusterFile---clusterAuthMode
Procedimientos de actualización (Usando opciones de ssl)
Nota
MongoDB proporciona configuraciones net.tls (y opciones de línea de comandos --tls) que corresponden a las configuraciones net.ssl (y opciones de línea de comandos --ssl). La nueva configuración de tls proporciona una funcionalidad idéntica a la configuración de ssl, ya que MongoDB siempre ha sido compatible con TLS 1.0 y versiones posteriores.
Los procedimientos de esta sección utilizan las opciones ssl. Para los procedimientos que utilizan las opciones tls, consulta Procedimientos de actualizar (usando las opciones tls).
Clústeres que actualmente utilizan TLS/SSL (mediante opciones de ssl)
Nota
El procedimiento utiliza las opciones ssl. Para procedimientos que utilicen las opciones tls, consulte Clústeres que Utilizan Actualmente TLS/SSL (utilizando opciones ssl).
Para clústeres que emplean autenticación TLS/SSL y de archivos clave, para actualizar a la autenticación de clúster X.509, utiliza el siguiente proceso de actualización progresiva:
Para cada nodo de un clúster, inicia el nodo con la opción
--clusterAuthModeestablecida ensendKeyFiley la opción--sslClusterFileconfigurada en la ruta apropiada del certificado del nodo. Incluye otras opciones TLS/SSL así como cualquier otra opción que se requiera para tu configuración específica. Por ejemplo:mongod --replSet <name> --sslMode requireSSL --clusterAuthMode sendKeyFile --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)> Con esta configuración, cada nodo continúa utilizando su keyfile para autenticarse como nodo. Sin embargo, cada nodo ahora puede aceptar un archivo de clave o un certificado X.509 de otros miembros para autenticar a esos miembros. Actualiza todos los nodos del clúster a esta configuración.
Luego, para cada nodo de un clúster, conéctate al nodo y utiliza el comando
setParameterpara actualizar elclusterAuthModeasendX509. [1] Por ejemplo,db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } ) Con esta configuración, cada nodo utiliza su propio certificado X.509, especificado con la opción
--sslClusterFileen el paso anterior, para autenticarse como nodo. Sin embargo, cada nodo sigue aceptando tanto un archivo de clave como un certificado X.509 de otros nodos para autenticar a esos nodos. Actualice todos los nodos del clúster a esta configuración.Opcional, pero recomendado. Finalmente, para cada nodo del clúster, conéctate al nodo y utiliza el comando
setParameterpara actualizar elclusterAuthModeax509y usar únicamente el certificado X.509 para la autenticación. [1] Por ejemplo:db.adminCommand( { setParameter: 1, clusterAuthMode: "x509" } ) Después de la actualización de todos los nodos, edita el archivo de configuración con los parámetros adecuados de X.509 para asegurarte de que, en los reinicios posteriores, el clúster utilice la autenticación X.509.
Consulta --clusterAuthMode para obtener información sobre los diferentes modos y sus descripciones.
Clústeres que actualmente no utilizan TLS/SSL (opciones de uso ssl)
Nota
El procedimiento utiliza las opciones ssl. Para los procedimientos que usan las opciones tls, consulta Actualización (usando opciones tls) de clústeres utilizando una clave de archivo pero no TLS/SSL.
Para los clústeres que utilizan autenticación con archivo de claves pero no TLS/SSL, para actualizar a X.509 autenticación, utilice el siguiente proceso de actualización gradual:
Para cada nodo de un clúster, inicia el nodo con la opción
--sslModeconfigurada enallowSSL, la opción--clusterAuthModeconfigurada ensendKeyFiley la opción--sslClusterFileconfigurada en la ruta adecuada del certificado del nodo. Incluya otras opciones TLS/SSL así como otras opciones que sean necesarias para su configuración específica. Por ejemplo:mongod --replSet <name> --sslMode allowSSL --clusterAuthMode sendKeyFile --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)> La configuración
--sslMode allowSSLpermite que el nodo acepte tanto conexiones entrantes TLS/SSL como no TLS/no SSL. Las conexiones salientes del nodo no usan TLS/SSL.La configuración de
--clusterAuthMode sendKeyFilepermite que cada nodo siga utilizando su archivo de claves para autenticarse como nodo. Sin embargo, ahora cada nodo puede aceptar ya sea un archivo clave o un certificado X.509 de otros nodos para autenticar a esos nodos.Actualice todos los nodos del clúster a estas configuraciones.
Luego, para cada nodo de un clúster, conecta al nodo y utiliza el comando
setParameterpara actualizar elsslModeapreferSSLy elclusterAuthModeasendX509. [1] Por ejemplo:db.adminCommand( { setParameter: 1, sslMode: "preferSSL", clusterAuthMode: "sendX509" } ) Con el
sslModeconfigurado enpreferSSL, el nodo acepta tanto conexiones entrantes TLS/SSL como conexiones no TLS/no SSL, y sus conexiones salientes utilizan TLS/SSL.Con
clusterAuthModeconfigurado ensendX509, cada nodo utiliza su certificado X.509, especificado con la opción--sslClusterFileen el paso anterior, para autenticarse como nodo. Sin embargo, cada nodo continúa aceptando un archivo de claves o un certificado X.509 de otros nodos para autenticar a estos nodos.Actualice todos los nodos del clúster a estas configuraciones.
Opcional, pero recomendado. Finalmente, para cada nodo del clúster, conecte al nodo y utilice el comando
setParameterpara actualizar elsslModearequireSSLy elclusterAuthModeax509. [1] Por ejemplo:db.adminCommand( { setParameter: 1, sslMode: "requireSSL", clusterAuthMode: "x509" } ) Con el
sslModeestablecido enrequireSSL, el nodo solo usa conexiones TLS/SSL.Con la configuración
clusterAuthModeajustada ax509, el nodo solo utiliza el certificado X.509 para autenticación.Después de la actualización de todos los nodos, edite el archivo de configuración con la configuración adecuada de TLS/SSL y X.509 para garantizar que, en reinicios posteriores, el clúster utilice la autenticación X.509.
Consulta --clusterAuthMode para obtener información sobre los diferentes modos y sus descripciones.
| [1] | (1, 2, 3, 4, 5, 6, 7) Como alternativa al uso del comando setParameter, también puedes reiniciar los nodos con las opciones y valores x509 y TLS/SSL apropiados. |