Java 服务器及其密钥库信任方之间的TLS身份验证
在讨论主要问题之前,我想陈述一下我对密钥库和信任库的理解: 1) 密钥库-作为服务器进行身份验证时使用的密钥(私钥)的详细信息 2) 信任库-我信任的来自不同域的根/中间CA和其他签名证书的列表 我正在尝试建立一个服务器间身份验证和数据交换机制。我的所有服务器的FQDN格式为Java 服务器及其密钥库信任方之间的TLS身份验证,java,ssl,tls1.2,keytool,Java,Ssl,Tls1.2,Keytool,在讨论主要问题之前,我想陈述一下我对密钥库和信任库的理解: 1) 密钥库-作为服务器进行身份验证时使用的密钥(私钥)的详细信息 2) 信任库-我信任的来自不同域的根/中间CA和其他签名证书的列表 我正在尝试建立一个服务器间身份验证和数据交换机制。我的所有服务器的FQDN格式为myserverX.mydomain.net,其中X是索引,例如myserver1.mydomain.net。如果我对keystore和truststore的理解是正确的,那么当myserver1从myserver2请求数据
myserverX.mydomain.net
,其中X是索引,例如myserver1.mydomain.net
。如果我对keystore和truststore的理解是正确的,那么当myserver1
从myserver2
请求数据时,客户机是myserver1
,服务器是myserver2
这样:
1) myserver1
需要信任myserver2
2) 当'myserver1'是服务器,myserver2
是客户端时,上述情况也将成立-现在除外myserver1
公钥证书应导入myserver2
信任库
我真的在这里得到东西了吗?还是我犯了什么根本性的错误?我的意图是使用自签名证书进行试验,然后为我的服务器获得一个正确的根CA签名证书。但如果有人能解释一下我是否做出了任何错误的假设,我将不胜感激
注意-我将使用Java keytool和JKS类型密钥库(使用默认的对称密钥算法和大小),我将使用
-certreq和-gencert
或-selfcert
为我的测试生成一个自签名证书。您是正确的,但如果您使用CA签名证书,则不需要导入步骤。根据定义,CA已经是可信的,因此它们所签署的证书也是可信的。所以你的测试毫无意义。“不需要导入步骤”-你的意思是说不需要“CA证书”导入,但我仍然需要导入我的自签名证书,对吗?我说的是真的。这似乎非常清楚。你的问题没有道理。如果您使用的是CA签名证书,那么您就不会使用自签名证书。我想我一直在努力理解的是,当TLS发生握手时,服务器会发送什么证书—这将是我的密钥库位置。如果这是由受信任的CA签署的,浏览器将正常继续,否则会通知该站点不受信任。它会将其自身或CA签署的证书从其密钥库中发送出去。你的问题是关于信任商店的,这就是我的回答。如果使用自签名证书,客户机必须信任它,这就是为什么需要向客户机信任库导入步骤的原因。客户端信任存储区已信任CA。