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. SSL cifra las conexiones a las bases de datos, pero aumenta el tiempo de respuesta de la conexión y el uso de la CPU. Por este motivo, no se recomienda habilitar SSL.

Prerrequisitos

Familiarícese con:

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

Uso de un certificado SSL

Utilice Java para conectarse al conjunto de réplicas. El formato del código Java es el siguiente:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&replicaSet=replica&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.

<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&replicaSet=replica&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.

Conéctese a una instancia de conjunto de réplicas mediante Java. El formato de enlace Java es el siguiente:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&replicaSet=replica
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.

<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&replicaSet=replica");
            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");
        }
    }

}