我目前正致力于为我的java应用程序中的所有对外HTTPS通信强制SSL信任,包括在硬化模式下不允许自签名证书。
但是,我想知道SSL信任是如何并且是否总是可信任的。您能帮助我理解以下有关Java信任库的详细信息吗?SSL信任完全取决于信任存储的内容(信任锚是信任的基础)。
installed)?
发布于 2021-12-16 17:55:09
发布于 2021-12-16 18:32:31
据我所知,默认的java update/upgrade.文件仅由包更新。
需要
。
再深入一点:
如果要在服务器端设置HTTPS,则要比:
您需要一个私钥和一个由任何官方认证机构签署的证书,比如Entrust、巴尔的摩CyperTrust (或者创建一个自签名的证书)。您必须设置一个包含私钥和签名证书的java密钥存储库。证书本身的有效期有限,必须在有效期届满前续签,您必须对其进行监视。在更新时,CA注意始终使用CA根证书,只要更新证书有效。
连接到服务器的客户端在SSL上接收到与服务器证书的握手,并根据它的信任库验证它,在默认配置和java情况下,信任库驻留在jre-x.y.z/lib/security/cacerts中。这个文件是在每个java更新上更新的,您可以依赖它的实际情况。
如果另外使用基于证书的客户端身份验证,则需要保持所需的客户端证书更新。通常情况下,你的伴侣会在他们的证书到期前发给你一份证书的副本。
或者,您只能实现客户端的CA根证书。在这种情况下,您对保持信任库的更新所做的努力就更少了。回溯是,您有较少的机会,客户验证。
如果您在客户端,则比:
默认配置中的客户端根据Java附带的cacert文件验证服务器证书。
除了默认的配置--如果您只信任某个特定的服务器--您将负责建立信任库并保持其最新。此信任库与上面描述的客户端身份验证相当,但包含服务器的内容。
至少,如果您需要客户端身份验证,您必须设置一个客户机密钥存储库( client ),它与上面所解释的服务器密钥存储库相当,但保留了客户端的内容。
https://stackoverflow.com/questions/70382726
复制相似问题