0

我有一个请求,我需要将 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。但即使这样也给出了握手异常的未知证书。

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

问候
Dheeraj Joshi

4

2 回答 2

1

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

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

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

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

于 2012-09-28T05:54:14.193 回答
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

于 2012-09-28T10:06:36.937 回答