gpt4 book ai didi

java - 为什么我的 RMI/SSL 客户端身份验证不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:14 25 4
gpt4 key购买 nike

我做了以下事情:

+ generate keystore.jks with keytool
+ exported keystore.cer file with keytool
+ imported keystore.cer file into truststore.jks
+ copied keystore.jks and keystore.cer to the client

然后我调用我的服务器

-Djavax.net.ssl.trustStore=truststore.jks -Djavax.net.ssl.trustStorePassword=*

和我的客户

 -Djavax.net.ssl.keyStore=forclient.jks -Djavax.net.ssl.keyStorePassword=*

服务器通过 UnicastRemoteObject 的 super() 调用公开其接口(interface)

super(PORT,
new SslRMIClientSocketFactory(),
new SslRMIServerSocketFactory(null, null, true));

Registry 不使用任何 SSL。为什么那行不通?如果我在服务器运行配置中添加 keystore VM 参数并在客户端中添加 trustore VM 参数,它确实有效。但我真的很想知道为什么?

最佳答案

请先了解keystore和truststore的用途。看POST .它说

  • keystore 包含私钥,以及带有相应公钥的证书。

  • 信任库包含来自您希望与之通信的其他方的证书,或来自您信任的证书颁发机构的证书以识别其他方。

所以客户端应该有信任库,这样它就可以信任与其交互的服务器使用服务器的公钥来加密数据。服务器应该有存储私钥的 keystore ,用于解密客户端用相应私钥加密的数据。

我希望现在您明白了为什么当您在客户端-服务器中切换 keystore 和信任库时您的应用程序可以正常工作。

关于java - 为什么我的 RMI/SSL 客户端身份验证不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6707986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com