java - 是否可以合并 java\jre\security\lib\cacerts 文件

标签 java authentication tomcat spring-mvc cas

在我的项目中,我将 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/

相关文章:

java - 为什么具有 DefaultTableModel 的 JTable 不会刷新?

ios - Tumblr 转发 (TMTumblrSDK) 返回 401 错误

windows - 如何自定义 Windows Vista 和 7 的登录屏幕?

java - 无需 session 的身份验证、授权和用户跟踪

java - 强制 JNI Get<type>ArrayElements 返回指针

java - JDBC 瘦连接

java - LocalDate 上个月的最后一个工作日

node.js - 在express.js中维护用户登录状态

与 Struts2 的 Tomcat 数据库连接池

Java Spring App 在 Tomcat+Apache2 上重定向错误的 URL