小编And*_*rew的帖子

SSL - 仅允许特定客户端或服务器(Java信任库)

如果信任存储区应仅包含根CA证书(这似乎是我从我所阅读的内容中推荐的),那么如何限制对特定方的访问(而不是信任存储区中CA验证的任何一方).

有关详细信息:

我有两个java应用程序 - 让我们称之为A和B - 使用SSL来保护通信.A和B都有一个客户端和服务器部分来发送(客户端)和接收(服务器)消息.客户端使用存储在client.keystore中的密钥,服务器使用server.keystore中的密钥,并且都使用单个信任存储来验证其他应用程序的身份(即,应用程序A有3个密钥库,应用程序B有3个密钥库) .

到目前为止,我已经使用keytools为客户端和服务器生成密钥,对其进行签名(使用我自己的测试CA),并将签名的证书加载回密钥库.我为app A和B执行此操作.为了完成SSL握手,我发现truststores需要包含用于签署其他apps密钥的CA证书(因此app A的truststore必须包含CA证书)用于签署应用B的客户端和服务器密钥,反之亦然).

到目前为止,这是有道理的,但由于信任存储包含根CA证书,我可以生成另一组密钥,使用相同的CA签名,并让其他应用程序接受它们 - 换句话说,应用B将接受流氓只要具有由根CA签名的密钥,代理就像app A一样出现.

SSL有没有防止这种情况的机制?我已经尝试将app A的客户端和服务器的公钥导入app B的信任存储区(反之亦然),但没有root证书,SSL握手将无法完成.

java ssl keytool

5
推荐指数
1
解决办法
899
查看次数

标签 统计

java ×1

keytool ×1

ssl ×1