Overview
En esta guía, puedes aprender a usar el protocolo TLS para asegurar tu conexión a una implementación de MongoDB. Para configurar tu conexión para usar TLS, activa la opción TLS y, opcionalmente, proporciona tus certificados para validación en la aplicación config/database.php .env.
Tip
Para aprender más sobre TLS, consulte la entrada de Wikipedia sobre Seguridad de la capa de transporte.
Habilitar TLS
En el archivo config/database.php de su aplicación, puede habilitar TLS en una conexión a su implementación de MongoDB de una de las siguientes maneras:
Establecer la opción
tlsentrueen tu cadena de conexiónEstableciendo la opción
tlsentrueen la propiedadoptionsde tu entrada de conexiónmongodb
Seleccione de lo siguiente Connection String y Connection Options pestañas para ver una muestra de código correspondiente:
Nota
Si su cadena de conexión utiliza un registro DNS SRV al incluir el prefijo mongodb+srv, TLS está habilitado en su conexión de forma predeterminada.
Configurar certificados
Para iniciar correctamente una solicitud TLS, tu aplicación podría necesitar presentar certificados criptográficos para probar su identidad. Los certificados de tu aplicación deben almacenarse como archivos PEM para habilitar TLS al conectarse.
Importante
Para uso en producción, recomendamos que tu implementación de MongoDB utilice certificados válidos generados y firmados por la misma autoridad certificadora. Para las pruebas, tu implementación puede usar certificados autofirmados.
La siguiente lista describe los componentes que su cliente puede presentar para establecer una conexión habilitada para TLS:
Componente TLS | Descripción |
|---|---|
Autoridad certificadora (CA) | Una o más autoridades certificadoras confiables al realizar una conexión TLS. Puedes pasar la ruta de este archivo a la opción |
Certificado de cliente | Un certificado digital que permite al servidor verificar la identidad de tu aplicación para establecer una conexión de red cifrada. Puedes pasar la ruta de este archivo a la opción |
Clave del certificado | El archivo de clave privada del certificado del cliente. Esta clave a menudo se incluye dentro del archivo del certificado. Si debe proporcionar este elemento, el certificado y la clave deben estar concatenados en un solo archivo que pueda pasar a la opción |
Frase de contraseña | La contraseña para descifrar la clave privada del cliente si está cifrada. Puede pasar la ruta de este archivo a la opción |
Certificados de referencia
Si es necesario, debes referenciar tus certificados al configurar tu conexión mongodb para que el servidor pueda validarlos antes de que el cliente se conecte.
Recomendamos hacer referencia a tus certificados y establecer otras opciones de TLS en la propiedad options de tu configuración de conexión en lugar de en la cadena de conexión. Esto mejora la legibilidad del código en tu aplicación.
Establezca las siguientes opciones en la propiedad options para referenciar sus certificados:
tlsCAFiletlsCertificateKeyFiletlsCertificateKeyFilePassword
Nota
Para fines de prueba, puedes establecer las siguientes opciones en true para desactivar la validación:
tlsAllowInvalidCertificatestlsAllowInvalidHostnames
También puede configurar la opción tlsInsecure en true para configurar implícitamente ambas opciones anteriores.
Especificar estas opciones en un entorno de producción puede volver insegura su aplicación. Para aprender más, consulte la referencia Opciones de conexión en el manual del servidor.
El siguiente ejemplo configura una conexión con TLS activado:
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => '<connection string>', 'database' => 'myDB', 'options' => [ 'tls' => true, 'tlsCAFile' => '<path to CA certificate>', 'tlsCertificateKeyFile' => '<path to private client certificate>', 'tlsCertificateKeyFilePassword' => '<path to client key passphrase>', ] ] ]
Información Adicional
Para obtener más información sobre cómo configurar las opciones del URI, consulta la documentación de la API de MongoDB\\Driver\\Manager::__construct().
Para obtener más información sobre cómo habilitar TLS en una conexión, consulta la siguiente documentación del manual del servidor: