Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-21 GMT+08:00

Java

Si se está conectando a una instancia mediante Java, un certificado SSL es opcional, pero descargar un certificado SSL y cifrar la conexión mejorará la seguridad de su instancia. SSL está deshabilitado de forma predeterminada para instancias recién creadas, pero puede habilitar SSL haciendo referencia a Habilitación o deshabilitación de SSL.

Prerrequisitos

Familiarícese con:

  • Conceptos básicos de computadora
  • Código Java

Uso de un certificado SSL

  • Descargue el certificado SSL y verifique el certificado antes de conectarse a las bases de datos.
  • En la página Instances, haga clic en el nombre de la instancia de base de datos de destino. En el área DB Information de la página Basic Information, haga clic en en el campo SSL para descargar el certificado raíz o el paquete de certificados.
  • Para obtener más información sobre cómo configurar una conexión SSL, consulte el documento oficial del controlador Java de MongoDB en https://www.mongodb.com/docs/drivers/java/sync/current/fundamentals/connection/tls/#std-label-tls-ssl.
Si se conecta a una instancia de clúster mediante Java, el formato del código es el siguiente:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true
Tabla 1 Descripción del parámetro

Parámetro

Descripción

<username>

Nombre de usuario actual.

<password>

Contraseña para el nombre de usuario actual

<instance_ip>

Si intenta obtener acceso a la instancia desde un ECS, establezca instance_ip en la dirección IP privada que se muestra en la página Basic Information de la instancia a la que desea conectarse.

Si tiene la intención de acceder a la instancia a través de una EIP, establezca instance_ip en la EIP que se ha enlazado a la instancia.

Si se requieren varias direcciones de host, enumere las direcciones en el formato de <instance_ip1>:<instance_port1>,<instance_ip2>:<instance_port2>....... Ejemplo: mongodb://username:*****@127.***.***.1:8635,127.***.***.2:8635/?authSource=admin

<instance_port>

Puerto de la base de datos que se muestra en la página Basic Information. Valor predeterminado: 8635

<database_name>

Nombre de la base de datos que se va a conectar.

authSource

Base de datos de usuarios de autenticación. El valor es admin.

ssl

Modo de conexión. true indica que se utiliza el modo de conexión SSL.

Utilice la herramienta keytool para configurar el certificado de CA. Para obtener más información sobre los parámetros, consulte Tabla 2.
keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass <password>
Tabla 2 Descripción del parámetro

Parámetro

Descripción

<path to certificate authority file>

Ruta para almacenar el certificado SSL.

<path to trust store>

Ruta para almacenar el truststore. Establezca este parámetro según sea necesario, por ejemplo, ./trust/certs.keystore.

<password>

Contraseña personalizada.

Configure las propiedades del sistema JVM en el programa para que apunten al truststore y keystore correctos:
  • System.setProperty("javax.net.ssl.trustStore","<path to trust store>");
  • System.setProperty("javax.net.ssl.trustStorePassword","<password>");
Para obtener más información sobre el código Java, consulte el siguiente ejemplo:
public class Connector {
    public static void main(String[] args) {
        try {
            System.setProperty("javax.net.ssl.trustStore", "./trust/certs.keystore");
            System.setProperty("javax.net.ssl.trustStorePassword", "123456");
            ConnectionString connString = new ConnectionString("mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true");
            MongoClientSettings settings = MongoClientSettings.builder()
                    .applyConnectionString(connString)
                    .applyToSslSettings(builder -> builder.enabled(true))
                    .applyToSslSettings(builder -> builder.invalidHostNameAllowed(true))
                    .build();
            MongoClient mongoClient = MongoClients.create(settings);
            MongoDatabase database = mongoClient.getDatabase("admin");
            //Ping the database. If the operation fails, an exception occurs.
            BsonDocument command = new BsonDocument("ping", new BsonInt64(1));
            Document commandResult = database.runCommand(command);
            System.out.println("Connect to database successfully");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Test failed");
        }
    }
}

Conexión sin el certificado SSL

No es necesario descargar el certificado SSL porque no se requiere la verificación del certificado en el servidor.

Si se conecta a una instancia de clúster mediante Java, el formato del código es el siguiente:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin
Tabla 3 Descripción del parámetro

Parámetro

Descripción

<username>

Nombre de usuario actual.

<password>

Contraseña para el nombre de usuario actual

<instance_ip>

Si intenta obtener acceso a la instancia desde un ECS, establezca instance_ip en la dirección IP privada que se muestra en la página Basic Information de la instancia a la que desea conectarse.

Si tiene la intención de acceder a la instancia a través de una EIP, establezca instance_ip en la EIP que se ha enlazado a la instancia.

Si se requieren varias direcciones de host, enumere las direcciones en el formato de <instance_ip1>:<instance_port1>,<instance_ip2>:<instance_port2>....... Ejemplo: mongodb://username:*****@127.***.***.1:8635,127.***.***.2:8635/?authSource=admin

<instance_port>

Puerto de la base de datos que se muestra en la página Basic Information. Valor predeterminado: 8635

<database_name>

Nombre de la base de datos que se va a conectar.

authSource

Base de datos de usuarios de autenticación. El valor es admin.

Para obtener más información sobre el código Java, consulte el siguiente ejemplo:
public class Connector {
    public static void main(String[] args) {
        try {
            ConnectionString connString = new ConnectionString("mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin");
            MongoClientSettings settings = MongoClientSettings.builder()
                    .applyConnectionString(connString)
                    .retryWrites(true)
                    .build();
            MongoClient mongoClient = MongoClients.create(settings);
            MongoDatabase database = mongoClient.getDatabase("admin");
            //Ping the database. If the operation fails, an exception occurs.
            BsonDocument command = new BsonDocument("ping", new BsonInt64(1));
            Document commandResult = database.runCommand(command);
            System.out.println("Connect to database successfully");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Test failed");
        }
    }
}