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 proporcione sus certificados para su validación al crear un cliente.
Esta guía incluye las siguientes secciones:
Habilitar TLS describe formas de habilitar TLS en su 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.ConfigEstructura para configurar sus opciones TLSInformación adicional proporciona enlaces a recursos y documentación de API para los tipos y métodos mencionados en esta guía.
Tip
Para obtener más información sobre TLS, consulte la entrada de Wikipedia sobre seguridad de la capa de transporte.
Habilitar TLS
Puedes habilitar TLS en una conexión a tu instancia de MongoDB de una de las siguientes maneras:
Establecer la opción
tlsentrueen su cadena de conexiónPasando una estructura
tls.Configvacía al métodoSetTLSConfig()al crear una instanciaClientOptions
Seleccione entre las siguientes opciones Connection String y ClientOptions pestañas para ver un ejemplo de código correspondiente:
Nota
Si usa un registro SRV de DNS al conectarse a MongoDB especificando la modificación +srv en su cadena de conexión, activará TLS en su conexión de forma predeterminada. Para desactivarlo, configure el valor del parámetro tls o ssl en false en su cadena de conexión o en el objeto ClientOptions.
Para obtener más información sobre el comportamiento de la conexión cuando utiliza una lista de semillas DNS, consulte la sección Formato de conexión SRV en el servidor MongoDB.
Para ver una lista completa de opciones de cliente, consulte la Especifique las guías de opciones de conexión.
Configurar certificados
Para iniciar correctamente una solicitud TLS, su aplicación debe presentar certificados criptográficos que acrediten 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 su 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 de 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. |
Certificados de Referencia en un Cliente
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 tls.Config, importe los paquetes crypto/tls y crypto/x509. A continuación, cree una instancia de estructura tls.Config y configure los campos de estructura correspondientes, como se muestra en la siguiente sección.
Para obtener más información sobre la tls.Config estructura, consulte la documentación de la API tls.Config.
Ejemplo
Este ejemplo realiza las siguientes acciones para crear una instancia tls.Config y una instancia Client con TLS habilitado:
Crea variables para hacer referencia a las rutas de los archivos del certificado
Crea un grupo de archivos CA utilizando el método
x509.NewCertPool()y agrega el contenido del archivo CACarga los archivos de certificado de cliente utilizando el método
tls.LoadX509KeyPair()Crea una instancia de una estructura
tls.Configy establece los camposRootCAsyCertificatesPasa la instancia
tls.Configal métodoSetTLSConfig()para establecer el campoTLSConfigdelClientOptions
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)
Opción insegura
En su tls.Config instancia, puede configurar campos opcionales para TLS en su conexión. Para realizar pruebas, puede configurar el InsecureSkipVerify campo true como.
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 su aplicación sea insegura y potencialmente vulnerable a certificados vencidos y procesos externos que se hacen pasar por instancias de cliente válidas.
Información Adicional
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:
Documentación de la API
Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API: