Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器及其密钥库信任方之间的TLS身份验证_Java_Ssl_Tls1.2_Keytool - Fatal编程技术网

Java 服务器及其密钥库信任方之间的TLS身份验证

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请求数据

在讨论主要问题之前,我想陈述一下我对密钥库和信任库的理解:

1) 密钥库-作为服务器进行身份验证时使用的密钥(私钥)的详细信息

2) 信任库-我信任的来自不同域的根/中间CA和其他签名证书的列表

我正在尝试建立一个服务器间身份验证和数据交换机制。我的所有服务器的FQDN格式为
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。