【问题标题】:ssl handshake exception due to keystore file由于密钥库文件导致的 ssl 握手异常
【发布时间】:2012-09-19 22:49:07
【问题描述】:

我有一个请求,我需要将 db 上的内容从服务器 A 中运行的应用程序写入另一个实例服务器 B 中运行的相同应用程序。

数据库读写是通过 SOAP API 的

两台服务器都有自己的 client.truststore 文件。

从使用服务器 A 的 client.trustsrore 的独立服务器 C 中,我能够读取写入服务器 A 的数据库 并且使用服务器 B 的客户端信任库可以读取写入服务器 B 的数据库。

由于要求是从服务器 A 读取并写入服务器 B。我在两个服务器中都引入了一个新的密钥库文件,并正确设置了 system.properties(密钥库位置和密码)。并且此密钥库已正确复制到具有权限的两台服务器中。

我使用私钥创建了证书,然后使用 keytool 命令创建了密钥库文件。

由于将密钥库文件保存在 2 服务器中不起作用。它总是抱怨unknown_certificate。 我尝试将证书导入到 /$JAVA_HOME/lib/security/ 下的 cacerts。但即使这样也会给出带有握手异常的未知证书。

还有什么我想做但我想念的吗?

问候
迪拉吉·乔希

【问题讨论】:

  • 您的两台服务器是否具有相同的主机名?据我所知,证书必须与目标服务器的主机名匹配。

标签: java soap sslexception


【解决方案1】:

应用程序服务器的证书必须与该服务器的主机名匹配。这可能是这里的问题,因为您有两个不同的服务器具有两个不同的主机名。

当您在证书生成过程中被要求提供您的名字和姓氏时,您应该输入有效的主机名:

What is your first and last name?
[Unknown]:  myserver.domain.com

但在这种情况下,我不确定你可以做些什么来完成你的任务。也许您应该为您的服务器提供两个具有不同相应主机名的不同证书。但是这些证书应该由您的数据库信任的一个父证书签名。类似的东西。

【讨论】:

    【解决方案2】:

    好的解决方案很简单。使用两台服务器的证书创建新商店

    keytool -import -alias <alias> --keystore <newstore> -file server1.crt -storepass changeit
    keytool -import -alias <alias> --keystore <newstore> -file server2.crt -storepass changeit
    

    现在 newstore 可用于 SSL 通信。

    问候
    迪拉吉·乔希

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-13
      • 2011-04-16
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多