为啥在 Spring Saml 中忽略 cacerts?

Posted

技术标签:

【中文标题】为啥在 Spring Saml 中忽略 cacerts?【英文标题】:Why is cacerts ignored in Spring Saml?为什么在 Spring Saml 中忽略 cacerts? 【发布时间】:2016-08-21 11:11:33 【问题描述】:

我已经基于此使用 FilesystemMetadataProvider 进行了实现:https://github.com/vdenotaris/spring-boot-security-saml-sample

为了使 SSL 握手对工件绑定起作用,我必须在 keyManager 使用的 java 密钥库中放置/信任 IDP 的 CA 证书。

我宁愿使用 jre 上的 cacerts 以防 IDP 更改 CA,但我无法找到任何要设置的属性,以便 Spring SAML 改为在其中查找。

这个答案也表明 cacert 被忽略了: Spring Security SAML - HTTPS connections

为什么在 Spring SAML 中忽略了 cacert?这对我来说似乎是一个不足。

我已检查 IDP 的 CA 是否在我的 jre 的 cacert 文件中。如果我从配置中删除与 TLS/socket 工厂相关的 bean,它仍然会失败。

【问题讨论】:

【参考方案1】:

是的,cacerts 被忽略。 Spring SAML 使用自定义实现来处理信任,目的是提供对系统安全性的更多控制。您始终可以轻松地将所有证书从 cacerts 复制到 samlKeystore。

【讨论】:

哦,Vladimir Schäfer 回答了我的问题!是的,我这样做了,很高兴确认这是“正确”的方式。虽然我更愿意设置一个属性来使用 jre 中的 cacerts【参考方案2】:

您的自定义证书/JDK 默认证书必须将 IDP 证书导入为 trust 。 您在 JKS 管理器中使用的自定义证书必须至少有一个私钥。 请在 JDK_PATH/jre/lib/securitycacerts 中导入您的信任并尝试命令 wget <your_idp_descriptor_url>

【讨论】:

我听不懂你在说什么。为了使工件绑定的 SSL 握手起作用,我必须将 IDP 的 CA 的公共 SSL 证书放在 jks.xml 中。我希望 spring saml 改为查看 cacert。 CA 证书已经在 jre 中的 cacert 文件中

以上是关于为啥在 Spring Saml 中忽略 cacerts?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Spring SAML 会阻止 Spring OAuth2 工作?

为啥 Spring SAML SP 需要 keystore 和相关的 key 配置?

单点登录服务的查询字符串参数的 Spring SAML 扩展条

为啥@JacksonXmlProperty 使用 Kotlin 忽略 Spring Boot 中的参数?

为啥 Spring 忽略了我的 @DependsOn 注释?

Spring Boot 在本地环境中禁用 SAML 安全性