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
Obtención y uso de Java
- Descargue el controlador Jar desde: https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.0.4/
- Para ver la guía de uso, visite https://mongodb.github.io/mongo-java-driver/4.2/driver/getting-started/installation/.
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.
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true
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. |
keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass <password>
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. |
- System.setProperty("javax.net.ssl.trustStore","<path to trust store>");
- System.setProperty("javax.net.ssl.trustStorePassword","<password>");
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.
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin
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. |
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"); } } }