Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Habilitar TLS en una Conexión

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 proporciona tus certificados para la validación al crear un cliente.

Esta guía incluye las siguientes secciones:

  • Habilitar TLS describe formas de habilitar TLS en tu conexión

  • Configurar Certificados describe los certificados necesarios para configurar TLS

  • Los certificados de referencia en un cliente proporcionan un ejemplo de cómo crear un tls.Config estructura para configurar tus opciones TLS

  • Información adicional proporciona enlaces a recursos y documentación de la API para los tipos y métodos mencionados en esta guía

Tip

Para aprender más información sobre TLS, consulta la entrada de Wikipedia sobre Seguridad de la capa de transporte.

Puedes habilitar TLS en una conexión a tu instancia de MongoDB de una de las siguientes maneras:

  • Establecer la opción tls en true en tu cadena de conexión

  • Pasando una estructura tls.Config vacía al método SetTLSConfig() al crear una instancia ClientOptions

Seleccione de lo siguiente Connection String y ClientOptions pestañas para ver una muestra de código correspondiente:

uri := "mongodb://<hostname>:<port>?tls=true"
opts := options.Client().ApplyURI(uri)
client, _ := mongo.Connect(opts)
uri := "<connection string>"
opts := options.Client().ApplyURI(uri).SetTLSConfig(&tls.Config{})
client, _ := mongo.Connect(opts)

Nota

Si usas un registro DNS SRV al conectarte a MongoDB especificando la modificación +srv en tu cadena de conexión, activas TLS en tu conexión por defecto. Para desactivarlo, establece el valor del parámetro tls o ssl en false en tu cadena de conexión u objeto ClientOptions.

Para obtener más información sobre el comportamiento de la conexión cuando se utiliza una lista de nodos iniciales DNS, consulte la sección SRV Connection Formato en el MongoDB Server.

Para ver una lista completa de opciones de cliente, consulta la Guías sobre Especificar opciones de conexión.

Para iniciar con éxito una solicitud TLS, tu aplicación debe 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

Usar certificados válidos en producción

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 tu cliente debe 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 realizar una conexión TLS.

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.

Clave del certificado

El archivo de clave privada del certificado de cliente. Esta clave a menudo se incluye dentro del propio archivo de certificado.

Frase de contraseña

La contraseña para descifrar la clave privada del cliente si está cifrada.

Debes referenciar tus certificados en tu objeto ClientOptions para que el servidor pueda validarlos antes de que el cliente se connecta.

Le recomendamos que configure el campo TLSConfig de su instancia ClientOptions en una estructura tls.Config para configurar su conexión TLS. Las estructuras tls.Config son nativas de Go y le permiten mantener todas sus opciones TLS en un solo objeto reutilizable.

Para crear una instancia de tls.Config, importa los paquetes crypto/tls y crypto/x509. A continuación, cree una instancia de estructura tls.Config y establezca los campos de estructura relevantes para su configuración, como se muestra en la siguiente sección.

Para obtener más información sobre la estructura tls.Config, consulte la documentación de la API de tls.Config.

Este ejemplo realiza las siguientes acciones para crear una instancia tls.Config y una instancia Client con TLS habilitado:

  1. Crea variables para hacer referencia a las rutas de los archivos de certificados

  2. Crea un grupo de archivos CA utilizando el método x509.NewCertPool() y agrega el contenido del archivo CA

  3. Carga los archivos de certificados de cliente usando el método tls.LoadX509KeyPair()

  4. Crea una instancia de una estructura tls.Config y establece los campos RootCAs y Certificates

  5. Pasa la instancia tls.Config al método SetTLSConfig() para establecer el campo TLSConfig del ClientOptions

caFile := "<path to CA certificate>"
certFile := "<path to public client certificate>"
keyFile := "<path to private client key>"
// Loads CA certificate file
caCert, err := os.ReadFile(caFile)
if err != nil {
panic(err)
}
caCertPool := x509.NewCertPool()
if ok := caCertPool.AppendCertsFromPEM(caCert); !ok {
panic("Error: CA file must be in PEM format")
}
// Loads client certificate files
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
panic(err)
}
// Instantiates a Config instance
tlsConfig := &tls.Config{
RootCAs: caCertPool,
Certificates: []tls.Certificate{cert},
}
uri := "<connection string>"
// Sets TLS options in options instance
opts := options.Client().ApplyURI(uri).SetTLSConfig(tlsConfig)

Dentro de tu instancia tls.Config, puedes configurar campos opcionales para configurar TLS en tu conexión. Para fines de prueba, puedes establecer el campo InsecureSkipVerify en true.

Advertencia

Establecer el campo InsecureSkipVerify en true deshabilita la validación del certificado y del nombre de host.

Especificar esta opción en un entorno de producción hace que tu aplicación sea insegura y potencialmente vulnerable a certificados vencidos y procesos externos que se hacen pasar por instancias válidas de clientes.

Para obtener más información sobre cómo habilitar TLS en una conexión, consulte la siguiente documentación en el manual de MongoDB Server:

Para obtener más información sobre los métodos y tipos mencionados en esta guía, vea la siguiente documentación de la API:

Volver

Encriptación en uso

En esta página