我有一个请求,需要将数据库上的内容从服务器 A 中运行的应用程序写入到另一个实例服务器 B 中运行的同一应用程序。
数据库读写是通过 SOAP API 进行的
两台服务器都有自己的 client.truststore 文件。
从使用服务器 A 的 client.trustsrore 的独立服务器 C,我能够对服务器 A 的数据库进行读写操作 并且使用服务器 B 的客户端信任库我能够读取写入服务器 B 的数据库。
由于要求是从服务器 A 读取并写入服务器 B。我在两台服务器中引入了一个新的 keystore 文件,并正确设置了 system.properties( keystore 位置和密码)。并且此 keystore 已正确复制到具有权限的两台服务器中。
我使用私钥创建了证书,然后使用 keytool 命令创建了 keystore 文件。
由于将 keystore 文件保存在 2 个服务器中不起作用。它总是提示unknown_certificate。 我尝试将证书导入到/$JAVA_HOME/lib/security/下的 cacerts 中。但即使这样也会给出带有握手异常的未知证书。
还有什么我想做却错过的事情吗?
问候
迪拉吉·乔希
最佳答案
应用程序服务器的证书必须与该服务器的主机名匹配。这可能是这里的问题,因为您有两个具有两个不同主机名的不同服务器。
在证书生成过程中,当系统要求您提供名字和姓氏时,您应该输入有效的主机名:
What is your first and last name?
[Unknown]: myserver.domain.com
但在这种情况下,我不太确定你可以做什么来完成你的任务。也许您应该为您的服务器拥有两个具有不同相应主机名的不同证书。但这些证书应由数据库信任的一个父证书进行签名。类似这样的事情。
关于java - 由于 keystore 文件导致 ssl 握手异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633439/