从 JAVA 应用程序使用 SSL 连接到 MongoDb

2023-12-27

我有一个MongoDb实例运行(单实例)SSL已启用。我可以通过以下方式连接到它RoboMongo在哪里SSL选项卡我提供以下内容:

CA File : /path to my certificate/testCA.pem 
PEM certificate/key: /path to my key/testKey.pem

从而成功连接。现在我尝试从 java 应用程序连接到同一个 mongodb。我使用以下命令将测试 A.pem 导入到 cacerts 中:

keytool -import -keystore cacerts -file testCA.pem -storepass changeit

我可以看到商店中添加了一个新条目。尝试将其他密钥添加到其中,但它显示证书无效。在 Java 应用程序上,我将系统属性设置如下:

System.setProperty ("javax.net.ssl.trustStore","C:\\Program Files\\Java\\jre1.8.0_91\\lib\\security\\cacerts");
System.setProperty ("javax.net.ssl.trustStorePassword","changeit");

我收到以下错误:

org.springframework.dao.DataAccessResourceFailureException: Timed out after 10000 ms while waiting to connect. Client view of cluster state is {type=Unknown, servers=[{address=test.mongo.com:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.io.EOFException}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting to connect. Client view of cluster state is {type=Unknown, servers=[{address=test.mongo.com:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.io.EOFException}}]
    at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:75)
    at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2075)
    at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1918)

我在这里缺少什么,提前谢谢!


除了导入CAFile.pem使用命令:

(导航到您的java_home/jre/lib/security运行命令)

1. keytool -import -trustcacerts -file testCA.pem -keystore cacerts -storepass "changeit"

我还必须导出key.pem into a pkcs12格式(默认密码'changeit')

2. openssl pkcs12 -export -out mongodb.pkcs12 -in testKey.pem

除了设置系统属性 trustStore/password 之外,还应该设置 keyStore/password:

System.setProperty ("javax.net.ssl.trustStore",JAVA_HOME + "\\lib\\security\\cacerts");
System.setProperty ("javax.net.ssl.trustStorePassword","changeit");
System.setProperty ("javax.net.ssl.keyStore",JAVA_HOME + "\\lib\\security\\mongodb.pkcs12");
System.setProperty ("javax.net.ssl.keyStorePassword","changeit");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 JAVA 应用程序使用 SSL 连接到 MongoDb 的相关文章

  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 将MongoDb atlas数据库导出到本机Mongo compass

    我在 Atlas 中有一个名为 test 的远程数据库 我想将集合名称 image table 下载为 JSON 文件 在 Mac 终端中 mongoexport db test collection image table image j
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 如何使用jetty建立2路SSL认证连接

    我想使用 2 路 ssl 连接器创建一个 servlet 我创建test2wayssl jks并发起SSL 选择通道连接器当我从邮递员发送请求时客户证书 邮递员的回应是 连接 127 0 0 1 29226 2wayssl 时出错 下面是我
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • 将当前 svn 版本写入文本文件

    我有一个铁路站点 我想在 mongrel 重新启动时 将当前的 svn 版本写入 public version txt 这样我就可以将其放入页眉的注释中 问题是获取当前本地版本的 svn 我有点困惑 例如 如果我对一个有一段时间没有更新的文
  • antlr4:ATN 版本 2 预计 3

    当尝试使用生成的语法和词法分析器时 我得到 org antlr v4 runtime atn ATN 无法使用版本 2 预期为 3 反序列化 ATN 怎么了 您的解析器是使用 ANTLR 4 0 生成的 但您尝试使用 ANTLR 4 1 执
  • 让 Cython 在 Anacondas、Windows 7 64 位上与 Python 3.4 配合使用

    我刚刚使用 Anaconda Condas 在 Windows 7 64 位计算机上安装了 Python 3 4 当我运行 你好世界 cython 示例 http docs cython org src quickstart build h
  • DateTimeFormatter 无法解析日期字符串,但 SimpleDateFormat 可以

    我无法使用 LocalDate 解析方法解析此示例日期字符串 312015 代表 2015 年 1 月 3 日 有人可以帮忙吗 import java text ParseException import java text SimpleD
  • 大规模 git 历史重写后如何同步本地历史?

    这个问题可能看起来很奇怪 但在重写 100 多次提交后 我在同步 git 历史记录时遇到了问题 在我重写的机器上 一个简单的git fetch同步了一切 在另一台 mac 机器上 git sync没有帮助 但在随机删除本地后 git log
  • Clang的Parallel STL进展如何?

    根据参考参数 https en cppreference com w cpp compiler support GCC 9已经实现了C 17 并行 STL与链接标志 ltbb 但我还没有听说过 Clang 如何专注于该功能的信息 或者他们永
  • required 和 ng-required 和有什么区别?

    有什么区别required and ng required 表单验证 AngularJS 表单元素寻找required属性来执行验证功能 ng required允许您设置required属性取决于布尔测试 例如 仅需要字段 B 比如说学生号
  • PhantomJS 已崩溃 - 致命 Windows 异常,代码 0xc0000005

    我们使用 EmberJS 构建了一个应用程序 当我们使用以下命令测试应用程序时 我们收到一条失败消息ember test 这里我提到了错误信息 操作系统 Windows 8 64位 PhantomJS 2 1 1 PhantomJS err
  • 字节数组到十六进制字符串

    我将数据存储在字节数组中 如何将此数据转换为十六进制字符串 我的字节数组的示例 array alpha 133 53 234 241 Using str format http docs python org 2 library stdty
  • 从已加载的 Magento 模型中检索附加数据

    在某些情况下 我收到的模型仅包含我需要的一些数据 例如catalog product不包含我可能需要使用的某些属性的实例 例如尺寸 小部件数量或腰围尺寸 为了缓解这个问题 我目前的选择是 创建一个新块 并使用手动加载所需的属性addAttr
  • 在 React Native 应用程序中禁用屏幕捕获/屏幕截图

    我遇到过一些专门针对 ios 和 Android 的解决方案 用于防止屏幕捕获和截屏 但是如何在 React Native 中禁用屏幕捕获呢 Android Inside android app src main java com Proj
  • 如何在选择查询中生成自动增量字段

    例如我有一个有 2 列的表 first name and last name具有这些值 Ali Khani Elizabette Amini Britney Spears 我想写一个select生成如下表的查询 1 Ali Khani 2
  • Visual Studio 2015 Update 2 团队资源管理器缺少“排除”

    我一直在 Visual Studio 2015 的 Team Explorer 部分中使用 Git 集成 我的解决方案中有许多配置文件需要修改 以便应用程序在本地运行 但我不想提交这些更改 在 VS2015 Update 1 中 Git 集
  • Google Sheets、带有服务帐户的 JWT 客户端

    我要拔头发了 帮助 更新 我正在使用 google auth library v1 0 0 和 googleapis v24 0 0 const JWT require google auth library var google requ
  • 如何使用 NLTK 分词器去除标点符号?

    我刚刚开始使用 NLTK 不太明白如何从文本中获取单词列表 如果我使用nltk word tokenize 我得到单词和标点符号的列表 我只需要文字 我怎样才能摆脱标点符号 还word tokenize不适用于多个句子 点被添加到最后一个单
  • Slick 3.1 - 检索列的子集作为案例类

    我正在使用 Slick 3 1 1 问题是在某些情况下我想省略一些相当重的列 但仍然将该列的子集具体化为案例类 考虑下面的表定义 class AuditResultTable tag Tag extends Table AuditResul
  • 如何在Unity3d中谷歌表单的另一个部分添加值

    如何在 unity3d 中的 Google 表单的其他部分添加价值 我只能在第 1 部分添加值 在其他部分添加值时遇到问题 这是代码 public GameObject username public GameObject email pu
  • C#中通过名称获取变量

    有没有一种方法可以通过知道变量的名称来获取变量的值 如下所示 double temp double MyClass GetValue VariableName 当我通常像这样访问变量时 double temp MyClass Variabl
  • Windows 窗体的 BackgroundWorker 替代品

    是否可以在 Windows 窗体应用程序中执行类似的操作 我正在尝试寻找其他更新 UI 的方法 而不是一直使用 BackgroundWorker 也许是这样的 public List
  • 从 JAVA 应用程序使用 SSL 连接到 MongoDb

    我有一个MongoDb实例运行 单实例 SSL已启用 我可以通过以下方式连接到它RoboMongo在哪里SSL选项卡我提供以下内容 CA File path to my certificate testCA pem PEM certific