首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyStore和TrustStore失配

KeyStore和TrustStore失配
EN

Stack Overflow用户
提问于 2016-04-07 09:09:59
回答 2查看 2.1K关注 0票数 0

我有一个客户,他取代了我们产品组件的密钥库和信任库。更换后,组件之间无法通信(双向SSL)。

在SSL日志上,我看到:

http-nio-8100-exec-2, fatal error: 42: null cert chain javax.net.ssl.SSLHandshakeException: null cert chain %% Invalidated: [Session-6, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256] http-nio-8100-exec-2, SEND TLSv1.2 ALERT: fatal, description = bad_certificate http-nio-8100-exec-2, WRITE: TLSv1.2 Alert, length = 2 http-nio-8100-exec-2, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain

它们在双方都配置了相同的密钥库和信任存储文件。我已经打开了他们的密钥库和信任库,它们就是这样构建的:

密钥存储库

entry1 -服务器

cert1 MD5: X

cert2 MD5: y

cert3 MD5: Z

信任库

entry1 -根

cert1 MD5: Z

entry2 -中间体

cert1 MD5: y

在我看来,密钥库中的cert1 (使用MD5 X)从信任库中缺失的事实是有问题的。

我说的对吗?

您能看到他们的密钥库和信任库的构建方式还有其他问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-07 11:41:33

看起来,您的问题与密钥库和/或信任库中缺少的证书有关。

一般来说,当客户端向服务器发送请求时,服务器会显示其证书链,该证书链必须包括服务器的证书作为第一个条目,然后是其颁发者和其他颁发者。除非在客户端的信任库中存在证书,否则以下每个证书必须直接验证其前面的证书。

您需要检查cert1 in keystore是否是一个自签名证书。您可以通过以下方式实现这一目标:

对于.jks类型:

代码语言:javascript
复制
keytool -list -v -keystore [keystore-file-name].jks

-For #PKCS12 12密钥库类型:

代码语言:javascript
复制
keytool -list -keystore [keystore-file-name].p12 -storetype PKCS12 -v

打印证书时,请检查'Issuer'属性。

如果它与'Owner‘属性匹配,则意味着它是一个自签名证书,需要将'cert1’添加到 truststore.

如果它们不匹配,请尝试下列选项之一:

  • 生成一个新的'cert1',由'Y''Z'签名,并将其添加到密钥存储库或替换现有的。是替换还是添加取决于代码读取证书的方式。替换可能是一个更好的选择。
  • 将当前'Issuer' of 'cert1'keystore添加到信任存储中。

如果'Issuer' of ‘证书[ keystore中的1’已经存在于信任库中)的证书,我希望SSL握手是成功的。

下面是如何将发行者添加到信任库中:

1)获取颁发机构的公共证书,该证书存储在.cer文件中。如果颁发者是自生成的,并且您可以访问它的密钥存储库,则可以使用以下命令从其中导出证书:

代码语言:javascript
复制
keytool -export -keystore [issuer-keystore].jks -alias [alias]-file [output-file-name].cer

2)将.cer文件导入信任库

代码语言:javascript
复制
keytool -importcert -file [output-file-name].cer -keystore [truststore-file-name].jks -alias [alias]
票数 1
EN

Stack Overflow用户

发布于 2016-04-07 09:46:52

我说的对吗?

不是的。只要信任存储库包含密钥库的证书链中的一个证书,它就应该信任KeyStore中的证书。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36471569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档