MongoDB SSL-соединение из Java-приложения, работающего в Windows - PullRequest
0 голосов
/ 07 октября 2018

Я новичок в SSL, и в моем приложении я могу без проблем подключиться к MongoDB.Я установил mongoDB в Windows (localhost: 27017), и мое приложение Java также работает в Windows.

Когда я запустил mongod с ssl, как указано здесь mongo ssl ,

  1. Создан файл сертификата
  2. Создан файл ключа и pem
  3. Запущен mongodb с комментарием ниже

    mongod --auth --sslМод requireSSL --sslCAFilemongodb-cert.crt --sslPEMKeyFile mongodb.pem

Я могу подключиться к Монго из командной строки и Robo 3T,

mongo --ssl --sslCAFile mongodb-cert.crt --sslPEMKeyFile mongodb.pem mydbname -u user -p password

Проблема в том, что я 'Я не могу подключиться к mongoDB из моего java-приложения, я создал jks-файл и файл p12 с помощью приведенных ниже команд (я чувствую, что это неправильно)

openssl pkcs12 -export -in mongodb-cert.crt -inkey mongodb-cert.key -out client.p12 -name "Whatever"

keytool -genkey -dname "cn=CLIENT" -alias truststorekey -keyalg RSA -keystore ./client-truststore.jks -keypass whatever -storepass Whatever

и использовал их в java-приложении

    System.setProperty("javax.net.ssl.trustStoreType","JKS");
    System.setProperty("javax.net.ssl.trustStore",
          "path to my key store\\client-truststore.jsk");
    System.setProperty("javax.net.ssl.trustStorePassword", "Whatever");

    System.setProperty("javax.net.ssl.keyStoreType","PKCS12");
    System.setProperty("javax.net.ssl.keyStore", "path to my key store\\java_client\\client.p12");
    System.setProperty("javax.net.ssl.keyStorePassword", "Whatever");

Когда мой сервер tomcat запускается, я получаю сообщение об ошибке ниже

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
    at sun.security.validator.Validator.validate(Validator.java:260)
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496)
    ... 16 more

Спасибо за вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...