在我的项目中,我将 Spring Security 与 CAS 服务器身份验证集成在一起。现在我的项目是一个 http 应用程序,而 CAS 服务器是一个 Https 应用程序。 Spring Security 和 CAS 集成后出现以下异常: sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径
为了解决此错误,我将 CAS 服务器 usr\java\jre\lib\security\cacerts 文件替换为本地 usr\java\jre\lib\security\cacerts 文件。执行此步骤后,错误消失。
现在我想将我的应用程序部署到其他服务器。在这个新服务器中还部署了一些其他应用程序,这些应用程序可能使用不同的 CAS 身份验证。我无法直接用这个新的服务器 cacerts 文件替换我的 CAS 服务器 cacerts 文件,因为部署的其他应用程序可能会失败。对吗?谁能建议我应该做什么才能合并 cacerts,或者应该做什么?我知道了一个名为 keytool 的命令,但无法理解如何使用它来合并 cacerts 文件。我不知道如何获取我的 CAS 服务器 .cer 文件,我知道这可以用于合并,请建议解决方案
最佳答案
这里有一个误解。
cacerts
是 Java 的默认信任库,包含已知 CA(Verisign 等)的所有可信证书。因此,默认情况下,java 可以像浏览器一样信任这些证书。
当您想要连接到由这些 CA 签名的服务器时,应使用此信任库。
在所有其他情况下,您应该使用自己的自定义信任库,以便您可以信任特定的服务器。实际上这是常态。
因此,您应该做的是加载代码您自己的信任库并将其提供给 Java 的 JSSE 以在握手期间进行身份验证
关于java - 是否可以合并 java\jre\security\lib\cacerts 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9954458/