Я новичок в SSL, и в моем приложении я могу без проблем подключиться к MongoDB.Я установил mongoDB в Windows (localhost: 27017), и мое приложение Java также работает в Windows.
Когда я запустил mongod с ssl, как указано здесь mongo ssl ,
- Создан файл сертификата
- Создан файл ключа и pem
Запущен 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
Спасибо за вашу помощь