由于密钥库文件导致的ssl握手异常

时间:2012-09-28 04:08:41

标签: java soap sslexception

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

DB读写是通过SOAP API的

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

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

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

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

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

我还有什么想做的,我错过了吗?

问候
Dheeraj Joshi

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

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

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

现在,newstore可用于SSL通信。

问候
Dheeraj Joshi