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 su implementación de MongoDB utilice certificados válidos generados y firmados por la misma autoridad de certificación. Para pruebas, su 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 de certificación (CA) | Una o más autoridades de certificación en las que confiar al establecer una conexión TLS. Puede 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 suele estar incluida en el propio archivo del certificado. Si es necesario proporcionarlo, el certificado y la clave deben concatenarse en un solo archivo que se 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, debe hacer referencia a sus certificados al configurar su 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, puede establecer las siguientes opciones en true para deshabilitar 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: