首页 > 解决方案 > 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] ]

标签: javamongodbibm-cloudcloud-foundrywebsphere-liberty

解决方案


我最近与我们的数据库提供商遇到了同样的问题,他们向我发送了他们的 .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");  

希望能帮助到你。


推荐阅读