在进入主要问题之前,我想陈述一下我对 Keystore 和 TrustStores 的理解:
1) Keystore - key (私钥)的详细信息,我将使用它作为服务器进行身份验证
2) Truststore - 我信任的来自不同域的根/临时 CA 和其他签名证书的列表。
我正在尝试建立一个服务器间的身份验证和数据交换机制。我所有的服务器都具有 FQDN 格式,如 myserverX.mydomain.net
其中 X 是索引,例如myserver1.mydomain.net
。如果我对 keystore 和 truststore 的理解是正确的,当 myserver1
从 myserver2
请求数据时,myserver1
是客户端,myserver2
是服务器。
这样:
1) myserver1
需要信任 myserver2
所以 myserver2
公钥证书应该导入到 `myserver1' 的信任库中。
2) 当“myserver1”是服务器并且 myserver2
是客户端时,上述情况也适用 - 除了现在 myserver1
公钥证书应该导入到 myserver2
信任库。
我真的把事情弄对了吗?还是我犯了任何根本性错误?我的目的是尝试使用自签名证书,然后为我的服务器获取正确的根 CA 签名证书。但如果有人能解释我在这里是否做出了任何错误的假设,我将不胜感激。
注意 - 我将使用 Java keytool 和 JKS 类型的 keystore (具有默认的对称 key 算法和大小)并且我将使用 -certreq 和 -gencert
或 -selfcert
为我的测试生成自签名证书。
最佳答案
您说得对,但是如果您使用 CA 签名的证书,则不需要导入步骤。根据定义,CA 已经是可信的,因此它们签署的证书也是如此。所以你的测试毫无意义。
关于java - 服务器及其 keystore Trustores 之间的 TLS 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45471410/