java - java.security.cert.CertPathValidatorException:证书链接错误
问题描述
按照文档访问https://..appRoot../TestJavaMongo/test/mongo/all时出现以下应用程序错误: https ://medium.com/@blumareks/mongodb-for-you-a-hardcore -java-cloud-developer-f67b909834f4
我正在测试从 IBM Cloud 上的 Liberty Java CF 应用程序连接 Mongo DB 服务。如何解决错误?
``` 错误 500:com.mongodb.MongoTimeoutException:在等待与 WritableServerSelector 匹配的服务器时,在 30000 毫秒后超时。集群状态的客户端视图是 {type=UNKNOWN, servers=[{address=sl-us-south-1-portal.16.dblayer.com:50233, type=UNKNOWN, state=CONNECTING, exception={com.mongodb. MongoSocketWriteException: 异常发送消息},
由 {javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX 路径构建失败:java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl 无法构建有效的 CertPath。;内因是:java.security.cert.CertPathValidatorException: CN=*********颁发的证书不可信;内部原因是:java.security.cert.CertPathValidatorException:证书链接错误},...
$ keytool -list -v -keystore mongoKeyStore 输入密钥库密码:
密钥库类型:JKS 密钥库提供者:SUN
您的密钥库包含 1 个条目
别名:mykey 创建日期:24/06/2017 条目类型:trustedCertEntry
所有者:CN=mwsadows@us.ibm.com-0b24b0ff06b390e0cc5e803aecd5ec82 发行人:CN=mwsadows@us.ibm.com-0b24b0ff06b390e0cc5e803aecd5ec82 序列号:59491e1b 有效期:6 月 20 日星期二 23:07:39 2017 年 6 月 2 日星期六 2017 年 6 月 2 日00:00 AEST 2037 证书指纹:MD5:A4:54:21:6A:52:E1:8B:CB:07:CC:25:A3:3B:1A:8B:05 SHA1: BE:5D:AE:94 :C3:A5:37:2D:43:B2:E7:FC:CF:39:19:EE:B8:10:29:9B SHA256: D5:6B:EB:D6:88:36:D4:77: 06:9B:8D:2B:83:39:9B:95:A5:E3:22:09:99:EF:32:89:31:E2:88:C2:86:58:83:62 签名算法名称: SHA512withRSA 版本: 3
扩展:
1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 65 2C 47 37 D6 4C B7 24 E9 A1 AA 14 01 4A 12 AD e,G7.L.$.....J.. 0010: 63 E0 7C 56
c..V] ]2: ObjectId: 2.5.29.19 临界=假 BasicConstraints:[CA:true PathLen:2147483647]
3:ObjectId:2.5.29.37 Criticality=false ExtendedKeyUsages [ serverAuth clientAuth ]
4:ObjectId:2.5.29.15 Criticality=true KeyUsage [ Key_CertSign ]
5: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 65 2C 47 37 D6 4C B7 24 E9 A1 AA 14 01 4A 12 AD e,G7.L.$.....J.. 0010: 63 E0 7C 56
c..V] ]
解决方案
我最近与我们的数据库提供商遇到了同样的问题,他们向我发送了他们的 .crt 文件,我不得不用它创建一个密钥库。
keytool -import -alias "name" -file "/path/to/file" -keystore "/path/to/keystore/file" -storetype pkcs12 -storepass "keystorepass"
然后在我的主课上,我定义了信任库和信任库:
System.setProperty("javax.net.ssl.trustStore", "/path/to/keystore/file");
System.setProperty("javax.net.ssl.trustStorePassword", "keystorepass");
希望能帮助到你。
推荐阅读
- c# - 表单 2 与 ListBox 值传递在 Form4 标签“帮助我”
- python - 由于 TypeError,无法在 iPad 的 Pythonista3 上安装 Pymongo
- xdebug - PHPUnit 给出没有代码覆盖驱动程序可用
- css - 使用对象位置移动图像一些像素
- python - Python将字符串写入CSV而不引用
- php - 如何在主索引文件路径之外链接资产文件夹
- javascript - 如何在 ReactJS 的模块函数中调用另一个文件函数
- html - Blogger 动态视图 FLIPCARD:如何增加移动设备上弹出面板的宽度?
- html - 在使用 shinydashboard 的 R Shiny 应用程序中包含从 RMarkdown 呈现的 HTML 文件会导致 tabItems 中断
- python - 他们有什么方法可以将列表的每个元素与python上另一个列表的每个元素分开吗