我有一个请求,我需要将数据库中的内容从服务器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
答案 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