Нельзя заставить водителя Java MongoDB для правильной работы с TLSJAVA

Программисты JAVA общаются здесь
Anonymous
 Нельзя заставить водителя Java MongoDB для правильной работы с TLS

Сообщение Anonymous »

Недавно я настроил сервер, используя самореагированный сертификат, и я просто не могу заставить его работать на Java. Мой процесс состоял в том, чтобы создать CA PEM и ключевой PEM и использовать их для TLS. С этим я получил компасы Mongo Compass, а также базовую программу Python. Когда я пытаюсь сделать то же самое в Java, я постоянно получаю эту ошибку:
hi, я недавно установил сервер, используя самореагированный сертификат, и я просто не могу заставить его работать на Java. Мой процесс состоял в том, чтобы создать CA PEM и ключевой PEM и использовать их для TLS. С этим я получил компасы Mongo Compass, а также базовую программу Python. Когда я пытаюсь сделать то же самое в Java, я постоянно получаю эту ошибку: < /p>

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

Caused by: javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
< /code>
Поскольку это Java, мне также пришлось удалить дополнительные вещи TLS в конце URI и использовать магазины доверия и ключей, чтобы заставить его работать, но никогда не работал. Ниже мой код: < /p>
        System.setProperty("javax.net.ssl.trustStore","C:/Program Files/Java/jdk-21/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword","changeit");
System.setProperty("javax.net.ssl.keyStore", "C:/Program Files/Java/jdk-21/lib/security/mongodb.pkcs12");
System.setProperty("javax.net.ssl.keyStorePassword","changeit");
System.out.println(System.getProperties());

String connectionString = "?tls=true";

MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(connectionString))

.applyToSslSettings(builder -> {
builder.enabled(true);
builder.invalidHostNameAllowed(true);
})
.build();

MongoClient client = MongoClients.create(settings);
< /code>
Чтобы попытаться настроить Trust Store, я запустил:
keytool -import -trustcacerts -file mongodbca.pem -keystore cacerts -storepass "changeit"< /code>
и для хранилища ключей я просто изменил свой файл PEM на файл PKCS12 с OpenSSL со следующим:
openssl pkcs12 -export -out mongodb.pkcs12 -in mongodbkey.pem

Что для меня так странно, так это то, что он работает со всем остальным, кроме Java, и, к сожалению, единственный, над которым мне нужно работать, это Java lol. Если у вас есть какие -либо идеи, это было бы здорово.

Подробнее здесь: https://stackoverflow.com/questions/794 ... y-with-tls

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