【问题标题】:Enable SSL for mongoDB using hibernate OGM使用休眠 OGM 为 mongoDB 启用 SSL
【发布时间】:2016-04-07 10:22:41
【问题描述】:

我正在使用休眠 OGM 与 mongoDB 进行交互。作为业务需求的一部分,我需要为 mongodb 和我的 java 应用程序之间的通信启用 ssl

我在 mongodb 文档中看到使用 mongodb-java-driver,就像在连接字符串中将 ssl 标志设置为 true 一样简单。我怎样才能在休眠中做到这一点?

===== 更新基于唯一给出的答案 ======

Hibernate OGM 4.2 版使用 mongodb Java 驱动程序 2.13 版,它不包括 MongoClientOptions.Builder 类中的 ssl 属性。我无法升级 hibernateOGM 版本,因为它仍然是 beta 或 alpha。我尝试显式升级 java 驱动程序版本,但后来我开始收到异常 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.ogm.datastore.mongodb.options.impl.WriteConcernOption

======== 更新 2 ==============

我查看了 mongodb java 驱动程序文档,发现将socketFactory 选项设置为SSLSocketFactory 可能会成功(请参阅https://docs.mongodb.org/v2.6/tutorial/configure-ssl-clients/#java)。但似乎休眠 OGM 4.2 没有选择以下属性来使用 SSLSocketFactory 来创建 mongo 客户端: hibernate.ogm.mongodb.driver.socketFactory=SSLSocketFactory

【问题讨论】:

    标签: java mongodb ssl mongodb-java hibernate-ogm


    【解决方案1】:

    您可以使用以下属性启用 SSL:

    hibernate.ogm.mongodb.driver.sslEnabled = true
    

    你也可以设置:

    hibernate.ogm.mongodb.driver.sslInvalidHostNameAllowed = true
    

    HIbernate OGM 使用com.mongodb.MongoClient,您可以使用前缀hibernate.ogm.mongodb.driver 设置com.mongod.MongoClientOptions 中的所有属性。

    查看documentationMongoClient.Builder 了解更多详情。

    【讨论】:

    • 我已根据您的建议更新了问题,但现在陷入了另一个问题。您还有其他选择吗?
    • 目前,有一个未解决的问题:hibernate.atlassian.net/browse/OGM-975
    • 一种解决方法可能是扩展 MongoDBDatastoreProvider 方法:protected MongoClient createMongoClient(MongoDBConfiguration config) 并使用参数hibernate.ogm.datastore.provider
    猜你喜欢
    • 1970-01-01
    • 2019-04-29
    • 2018-12-16
    • 2019-01-13
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多