我开发了一个Java应用程序,它使用自签名SSL证书通过https与我的服务器通信。
现在我想与我的一些客户分享这个应用程序。有没有办法让他们跳过将证书导入到他们的密钥库?或者他们总是要手动导入它?
答案 0 :(得分:3)
根据您发布的链接,您正在谈论单向SSL,您需要让您的客户知道服务器的自签名证书(对吗?)。
因此,您的客户端应用程序需要的是所谓的信任存储。信任存储区是一个包含您信任的所有证书的Java密钥库,例如要连接的服务器的证书。 java安装中的cacerts
文件包含默认情况下受信任的各种证书。
您可以提供自己的信任库,其中包含服务器证书和客户端应用程序,而不是将服务器证书安装到客户端Java安装的cacerts
文件中。然后,需要使用系统属性-Djavax.net.ssl.trustStore=path/to/your/truststore
启动客户端应用程序。
答案 1 :(得分:0)
你做错了。每个客户端都应使用自己的SSL证书:在本地生成密钥对,生成证书,并将其发送给您。对所有客户使用单一证书基本上相当于完全不使用一个证书:您无法唯一地识别客户端,因此它毫无意义。