mongodb - 如何在 Scala 中使用 SSL 连接到 MongoDB?
问题描述
我正在尝试建立与我在机器上的容器中运行并继续运行的 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
我很确定问题是我将自签名证书添加到密钥库中的内容或方式。谢谢你提供的所有帮助。
解决方案
推荐阅读
- python - 具有关联扩展名的 Python 可执行运行文件
- javascript - 动态样式 DraftJS .DraftEditor-editorContainer
- git - 如果我在在线 GitHub 编辑器上进行了更改,如何从分支中获取?
- javascript - 在ajax调用之外访问数组?
- php - 如何将 Blob PDF 数据从 mysqli 数据库显示到您的 html PHP 表
- c - 汇编中存储的静态值在哪里
- ios - 如何将内容宽度设置为设备/父宽度的大小?
- heroku - 使用 Heroku 应用设置 Google 域时出现问题
- c# - 如何在数据网格视图c#windows应用程序中保存复选框的选中状态
- java - Spark 不向 SQL WHERE 子句添加日期