我正在尝试建立与我在计算机上的容器中运行的mongodb实例的ssl连接,并继续运行,
nioEventLoopGroup-2-4, fatal error: 46: General SSLEngine problem
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我为mongo创建了一个自签名的.pem,
openssl req -x509 -newkey rsa:4096 -keyout mongo.key -out mongo.crt -days 365 -nodes
cat mongo.key mongo.cert > mongo.pem
将它们移动到文件夹中,将其作为绑定卷安装在我的容器中并添加
--sslMode requireSSL --sslPEMKeyFile /etc/boundfolder/mongo.pem
到mongo启动。我可以使用mongo客户端连接到此。
我正在像这样在Scala中设置mongo客户,
val hostConf = ClusterSettings.builder().hosts(List(new ServerAddress(hostName)).asJava).build()
val clientSettings = MongoClientSettings.builder()
.streamFactoryFactory(NettyStreamFactoryFactory())
.clusterSettings(hostConf)
val withTLS = clientSettings.sslSettings(
SslSettings.builder()
.enabled(true)
.invalidHostNameAllowed(true)
.build())
MongoClient(withTLS.build())
最后,我创建了一个密钥库,
keytool -importcert -trustcacerts -file mongo.crt -keystore mongo.keystore
并使用以下参数启动应用程序,
-Djavax.net.ssl.keyStore=/path/to/mongo.keystore -Djavax.net.ssl.keyStorePassword=changeit -Djavax.net.debug=SSL
我很确定问题是什么,或者如何,我正在将自签名证书添加到密钥库中。感谢您提供的任何帮助。