通过Java连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。文档数据库服务新实例默认关闭SSL数据加密。SSL连接实现了数据加密功能,但同时也会增加网络连接响应时间和CPU消耗。
参数说明
参数 | 说明 |
username | 当前用户名。 |
password | 当前用户的密码。 |
instance_ip | 如果通过弹性云服务器连接,“instance_ip”是主机IP,即“基本信息”页面该实例的“内网地址”。如果通过连接了公网的设备访问,“instance_ip”为该实例已绑定的“弹性公网IP”。如果需要配置高可用地址,即“基本信息”页面该实例的“数据库连接”。 |
instance_port | 端口,默认8030,集群默认9030。当前端口,参考“基本信息”页面该实例的“数据库端口”。 |
database_name | 数据库名,即需要连接的数据库名。 |
authSource | 鉴权用户数据库,取值为admin。 |
ssl | 连接模式,值为true代表是使用ssl连接模式。 |
Maven 配置
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.10</version> </dependency> </dependencies>
无证书链接
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");
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("Connect failed");
}
}
}使用SSL证书连接
使用keytool工具配置CA证书:
keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass <password>
在程序中设置JVM 系统属性以指向正确的信任库和密钥库:
System.setProperty("javax.net.ssl.trustStore","<path to trust store>");
System.setProperty("javax.net.ssl.trustStorePassword","<password>");Java Code:
public class Connector {
public static void main(String[] args) {
try {
System.setProperty("javax.net.ssl.trustStore", "./conf/certs.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
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");
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("Connect failed");
}
}
}