如何在Scala中使用SSL连接到MongoDB?

时间:2018-10-01 16:57:47

标签: mongodb scala ssl

我正在尝试建立与我在计算机上的容器中运行的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

我很确定问题是什么,或者如何,我正在将自签名证书添加到密钥库中。感谢您提供的任何帮助。

0 个答案:

没有答案