Overview
En esta guía, aprenderá a usar el protocolo TLS para proteger su conexión a una implementación de MongoDB. Para configurar su conexión con TLS, habilite la opción TLS y, opcionalmente, proporcione sus certificados para su validación en la aplicación. config/database.php .env.
Tip
Para obtener más información 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 su cadena de conexiónEstableciendo la opción
tlsentrueen la propiedadoptionsde tu entrada de conexiónmongodb
Seleccione entre las siguientes opciones Connection String y Connection Options pestañas para ver un ejemplo 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, es posible que su aplicación necesite presentar certificados criptográficos para demostrar su identidad. Los certificados de su 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 su aplicación para establecer una conexión de red cifrada. Puede pasar la ruta de este archivo a la opción |
Clave de 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.
Le recomendamos que haga referencia a sus certificados y configure otras opciones de TLS en la propiedad options de la configuración de su conexión, en lugar de en la cadena de conexión. Esto mejora la legibilidad del código de su aplicación.
Establezca las siguientes opciones en la propiedad options para hacer referencia a sus certificados:
tlsCAFiletlsCertificateKeyFiletlsCertificateKeyFilePassword
Nota
Para fines de prueba, puede establecer las siguientes opciones en true para deshabilitar la validación:
tlsAllowInvalidCertificatestlsAllowInvalidHostnames
O bien, puede establecer la opción tlsInsecure en true para establecer implícitamente ambas opciones anteriores.
Especificar estas opciones en un entorno de producción podría hacer que su aplicación sea insegura. Para obtener más información, consulte la referencia de opciones de conexión en el manual del servidor.
El siguiente ejemplo configura una conexión con TLS habilitado:
'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 de URI, consulte la documentación de la API MongoDB\\Driver\\Manager::__construct().
Para obtener más información sobre cómo habilitar TLS en una conexión, consulte la siguiente documentación del manual del servidor: