Spring数据mongodb,如何设置SSL?

问题描述 投票:3回答:1

到目前为止,我没有找到关于这个主题的好解释/文档。

我在用

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.9.5.RELEASE</version>
</dependency>

我的代码看起来像这样:

   @Bean
   public MongoClientFactoryBean mongo() {
      MongoClientFactoryBean mongo = new MongoClientFactoryBean();
      mongo.setHost(host);
      mongo.setPort(port);
      mongo.setCredentials(new MongoCredential[]{MongoCredential.createCredential(username, database, password.toCharArray())});
      return mongo;
   }

   @Bean
   public MongoTemplate mongoTemplate(Mongo mongo) throws Exception {
      return new MongoTemplate(mongo, database);
   }

你知道我应该为此配置SSL吗?我可以允许无效证书吗?

等效的mongo命令行

mongo --ssl --sslAllowInvalidCertificates --host <host> --port <port>
spring mongodb spring-data-mongodb
1个回答
3
投票

文档中对此进行了解释:请参阅以下内容:

http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/connecting/ssl/?_ga=1.122423051.1001600813.1475930911

以下配置也可用于启用它

    @Bean
    public  MongoClientOptions mongoClientOptions(){
        System.setProperty ("javax.net.ssl.keyStore","<<PATH TO KEYSTOR >>");
        System.setProperty ("javax.net.ssl.keyStorePassword","PASSWORD");   
        MongoClientOptions.Builder builder = MongoClientOptions.builder();
        MongoClientOptions options=builder.sslEnabled(true).build();        
        return options;
    }

将mongo客户端选项作为参数传递给MongoClient实例

public MongoClient(ServerAddress addr, MongoClientOptions options) {
        super(addr, options);
    }

进一步添加,当mongod进程启动时

mongo --ssl --sslAllowInvalidCertificates --host --port

连接到mongo进程的客户端不必设置任何选项来支持它。

© www.soinside.com 2019 - 2024. All rights reserved.