Как настроить mongodb с файлом .pem в качестве сертификата в Springboot?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как настроить mongodb с файлом .pem в качестве сертификата в Springboot?

Сообщение Anonymous »

Я попробовал несколько вариантов подключения к mongodb с использованием ssl с файлом .pem в качестве сертификата и столкнулся с проблемой локально.
Ниже приведен фрагмент кода моего локального компьютера:

Код: Выделить всё

import com.mongodb.Block;
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCredential;
import com.mongodb.client.MongoClient;
import com.mongodb.connection.SslSettings;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.client.MongoClients;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;

@Configuration
@EnableMongoRepositories
public class SpringMongodbConfiguration {

@Value("${documentdb.truststore.password}")
private String trustStorePassword;
@Value("${spring.data.mongodb.host}")
private String mongoHost;
@Value("${spring.data.mongodb.port}")
private String mongoPort;
@Value("${spring.data.mongodb.username}")
private String mongoUser;
@Value("${spring.data.mongodb.password}")
private String mongoPassword;
@Value("${spring.data.mongodb.authentication-database}")
private String mongoAdminDB;

@Bean
public MongoClient mongoClient() throws Exception {
SSLContext sslContext = createSSLContext();
StringBuilder connectionString = new StringBuilder(String.format("mongodb://%s:%s", mongoHost, mongoPort));
ConnectionString uri = new ConnectionString(connectionString.toString());
MongoCredential credentials = MongoCredential.createCredential(
mongoUser, mongoAdminDB, mongoPassword.toCharArray());
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(uri)
.credential(credentials)
.applyToSslSettings((Block) sslContext)
.build();
return MongoClients.create(settings);
}

private SSLContext createSSLContext() throws Exception {
// Load PEM file
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream inputStream = getClass().getResourceAsStream("./src/main/resources/us-east-1-bundle.pem");

// Load certificates from PEM file
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
int index = 0;
while (inputStream.available() > 0) {
keyStore.setCertificateEntry("alias" + index++, cf.generateCertificate(inputStream));
}

// Initialize SSL context
SSLContext sslContext = SSLContext.getInstance("TLS");
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
sslContext.init(null, trustManagerFactory.getTrustManagers(), null);

return sslContext;
}
}
Application.properties:

Код: Выделить всё

##### Mongo Database Configuration #####
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=test
spring.data.mongodb.port=27017
spring.data.mongodb.username=adminUser
spring.data.mongodb.password=adminPassword
documentdb.truststore.password=changeit
spring.data.mongodb.host=localhost
Сертификат:
Загрузите файл сертификата us-east-1-bundle.pem по ссылке ниже:
введите описание ссылки здесь
Сертификат:
Загрузите файл сертификата us-east-1-bundle.pem по ссылке ниже:
введите описание ссылки здесь
Сертификат:
Загрузите файл сертификата us-east-1-bundle.pem по ссылке ниже:
введите описание ссылки
p>
Пожалуйста, предложите, какие изменения необходимы для успешного подключения. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/786 ... springboot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»