无法从 JAVA 连接到 Mongo SSL 副本集

2023-12-22

我正在尝试使用 SSL 加密设置最新版本的 MongoDB,我能够从 mongo shell 进行连接,但是当我从 Java 客户端连接时出现错误。

Works

mongo admin --host mongo1.xxxx.com --ssl --sslPEMKeyFile mongoClient.pem --sslCAFile mongoCA.crt

不起作用

public static void main(String args[]){
    System.setProperty("javax.net.ssl.trustStore","/home/gasparms/truststore.ts");
    System.setProperty("javax.net.ssl.trustStorePassword", "mypasswd");

    System.setProperty("javax.net.ssl.keyStore", "/home/gasparms/truststore.ts");
    System.setProperty("javax.net.ssl.keyStorePassword", "mypasswd");
    System.setProperty("javax.security.auth.useSubjectCredsOnly","false");

    MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true)
    .build();

    MongoClient mongoClient = new MongoClient("mongo1.xxxx.com",options);
    System.out.println(mongoClient.getDatabaseNames());
}

我从 Mongo 端收到此错误:

2015-06-09T15:08:14.431Z 我网络 [initandlisten] 连接 从 192.168.33.1:38944 #585 接受(现已打开 3 个连接) 2015-06-09T15:08:14.445Z E 网络 [conn585] 没有 SSL 证书 由同行提供;连接被拒绝 2015-06-09T15:08:14.445Z I NETWORK [conn585] 结束连接 192.168.33.1:38944(2 个连接 现已开放)2015-06-09T15:08:14.828Z I NETWORK [conn580] 结束连接 192.168.33.13:39240(现已打开 1 个连接)

并在java客户端程序中

信息:连接到服务器时监视器线程中出现异常 mongo1.xxxx.com:27017 com.mongodb.MongoSocketReadException: 过早到达流的末尾 com.mongodb.connection.SocketStream.read(SocketStream.java:88) 在 com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:491) 在 com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:221) 在 com.mongodb.connection.CommandHelper.receiveReply(CommandHelper.java:134) 在 com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:121) 在 com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) 在 com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:83) 在 com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:43) 在 com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) 在 com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127) 在 java.lang.Thread.run(Thread.java:745)

证书的创建

我有 mongoCA.crt 和 mongoClient.pem 与 mongo shell 一起使用。然后,我想将 .pem 和 .crt 导入到 java 密钥库

openssl x509 -outform der -in certificate.pem -out certificate.der
keytool -import -alias MongoDB-Client -file certificate.der -keystore truststore.ts -noprompt -storepass "mypasswd"
keytool -import -alias "MongoDB-CA" -file mongoCA.crt -keystore truststore.ts -noprompt -storepass "mypasswd"

我做错了什么?


我遇到了同样的问题,对我来说,这是我创建密钥库的方式的问题。我注意到您对信任库和密钥库使用相同的文件 truststore.ts。这可以工作,但我建议使用单独的文件以避免混淆。

我已经为根 CA 和 mongo 用户创建了 .pem 文件,并且能够成功使用它们与 mongo shell 连接。我从这些文件中创建了 truststore.jks 和 keystore.jks。

首先,为了创建 truststore.jks 我运行:

keytool -import -alias root -storepass mypass -keystore truststore.jks -file rootca.pem -noprompt

对于 keystore.jks,您需要公钥和私钥,因此首先将 PEM 文件转换为 PKCS12 格式,然后导入到 JKS:

openssl pkcs12 -export -out myuser.pkcs12 -in myuser.pem -password pass:mypass
keytool -importkeystore -srckeystore myuser.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS -deststorepass mypass -srcstorepass mypass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从 JAVA 连接到 Mongo SSL 副本集 的相关文章

  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 经典 asp 中的 WinHttp TLS 连接

    我正在尝试将付款数据发送到 SagePay 由于他们关闭了 SSL 因此需要使用 TLS 发送数据 我的代码如下 set httpRequest Server CreateObject WinHttp WinHttprequest 5 1
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 为什么 appcmd.exe 解锁配置在 Azure 模拟器上不起作用?

    我最近升级到 Azure 2 1 SDK 现在我的部分功能遇到了问题web config在计算模拟器上运行时处于 Web 角色中 我的web config包含这个
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 在 mac osx 11.6 上安装 ruby​​ 2.6.x 和 3.0.x 时 ruby​​-install 失败

    运行 ruby install 时 构建失败 rbenv 问题中也报告了这一点 https github com rbenv ruby build issues 1725 https github com rbenv ruby build
  • 使用 AJAX 在 Rails 中自动保存表单

    我正在尝试为 Post new 操作自动保存表单 每隔一分钟左右 我想 POST 到 Post autosave 然后检查first or create 并保存 更新 Posts 表中的记录 但我的问题是 我无法再从表单访问 POST 参数
  • 在视频视图中播放 YouTube 视频

    在我的应用程序中 我有一个视频视图 我想在其中播放 YouTube 视频 为此 我尝试了很多方法 例如 VideoView mVideoView new VideoView this setContentView mVideoView mV
  • C++中的“new”运算符,指针问题

    愚蠢的问题 但是每当你调用 new 时 你总是有一个指针吗 SomeClass person new SomeClass 这是因为您需要一个指针来指向为 SomeClass 变量 person 分配的新内存空间吗 谢谢 If new成功完成
  • kml 谷歌扩展不在模式中

    我居住的司法管辖区使用谷歌地球发布了数据 他们指向的kml文件包含
  • 张量流图构造中没有形状错误,但在图计算过程中出现形状不匹配错误

    张量流图构造没有出现错误 但在图计算过程中出现形状不匹配错误tf gradients 我猜错误是在反向传播中 这是我得到的错误 InvalidArgumentError 请参阅上面的回溯 reshape 的输入是一个具有 16777216
  • Anaconda Prompt 不会启动 _NamespacePath

    我有一个奇怪的错误 我找不到解决方案 每次启动 Anaconda Prompt 运行 Windows 10 时 我都会在底部收到以下错误 即使我尝试使用 conda 我也会收到相同的错误 在安装信息之后 我尝试卸载并重新安装 Anacond
  • CSharpCodeProvider 似乎停留在 .NET 2.0,如何获得新功能?

    我有以下相当标准的代码作为包装器CSharpCodeProvider 这个类工作得很好 并且执行得很好等等 但是 尽管我的应用程序是针对 NET 3 5 构建的 并且在进行此编译时引用了 v3 5 程序集 但我仍然无法访问任何额外好的 C
  • 使用 rustc 和 clang 运行 LLVM 文件

    我正在尝试运行 ll文件带有 clang 并出现链接器错误 我有一个文件test rs它只包含一个 main 函数println 陈述 我使用以下命令生成 LLVM IRrustc emit llvm ir crate type bin t
  • 用于字符串插值的 Swift 协议

    我必须实现什么协议来控制 Swift 中字符串插值中对象的表示方式 我不想指定打印的内容 如下所示 struct A var a A println a 您需要实施Printable协议 该协议应该被那些希望定制自己的类型的类型所采用 文本
  • 为什么 VStack 不能在带有滚动视图的 GeometryReader 中工作?

    我的 vStack 滚动视图在没有 GeometryReader 的情况下也能工作 在 AppleTV 中 我没有在 iOS 中进行测试 然后我添加了几何读取器 VStack 像 ZStack 一样 折叠 我能做什么来解决这个问题 是的 我
  • ASP.NET MVC 站点地图和/或安全调整

    ASP NET MVC 中是否有与 Web 表单中的 SiteMap 和安全调整功能等效的功能 我刚刚开始学习 MVC 一直在寻找解决方案 以防止在学习时走上错误的道路 Check ASP NET MVC 站点地图提供程序 https gi
  • 将 Param 与参数数组绑定

    我有一个函数可以执行此操作 function registerUser firstName lastName address postcode email password params array firstName lastName a
  • Oracle 中触发器无效

    在对表进行某些更改后 我的数据库中的某些触发器变得无效 但他们似乎仍在工作 我遇到的唯一问题是 如果我使用 SQL Developer 触发器的左侧会出现红叉 表明它们无效 这是一个大问题吗 我知道我可以重新编译触发器来解决这个问题 但我不
  • 为什么我的许可证没有显示?

    In my
  • Asp.Net MVC 验证 - 依赖字段

    我目前正在尝试进行 MVC 验证 并且遇到了一些问题 其中需要一个字段 具体取决于另一个字段的值 下面是一个例子 我还没弄清楚 如果 PaymentMethod Cheque 那么 ChequeName 应该是必需的 否则可以通过 Requ
  • NSMutableArray 线程安全

    在我的应用程序中 我正在从多个线程访问和更改可变数组 一开始 当我尝试使用以下命令访问对象时 它崩溃了objectAtIndex 因为索引超出范围 该索引处的对象已从另一个线程的数组中删除 我在网上搜索了如何解决这个问题 我决定尝试这个so
  • facebook c# sdk - 用户尚未授权应用程序执行此操作

    我正在构建一个控制台应用程序 它将将流发布到页面墙上 问题 我收到 用户尚未授权应用程序执行此操作 我正在使用 opengraph 来获取访问令牌 我错过了什么吗 任何帮助是极大的赞赏 谢谢 constants string apiKey
  • Android 在 AsyncTask onPostExecute 中使用接口返回值[重复]

    这个问题在这里已经有答案了 在下面的代码中我想返回值AsyncTask使用接口 但我得到了错误的值 并且无法返回正确的值onPostExecute 我开发了这个link https stackoverflow com questions 1
  • 无法从 JAVA 连接到 Mongo SSL 副本集

    我正在尝试使用 SSL 加密设置最新版本的 MongoDB 我能够从 mongo shell 进行连接 但是当我从 Java 客户端连接时出现错误 Works mongo admin host mongo1 xxxx com ssl ssl