SAML2元数据 - 多个签名证书

时间:2016-03-10 06:34:00

标签: saml adfs shibboleth service-provider

我正在查看SAML IdP的元数据,它列出了三个独特的证书--2个签名和1个加密。

...   
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:X509Data>
        <ds:X509Certificate>
        </ds:X509Certificate>
    </ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:X509Data>
        <ds:X509Certificate>
        </ds:X509Certificate>
    </ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:X509Data>
        <ds:X509Certificate>
        </ds:X509Certificate>
    </ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
...

我理解为什么它会列出签名和加密证书,但如何确定在我的服务提供商中使用哪种签名证书?为什么有两个签名证书?

提前致谢!

2 个答案:

答案 0 :(得分:5)

当IDP更改其签名证书时,它首先与元数据中的旧证书并行发布新证书。当idp实际切换到使用新证书时,所有SP必须知道新证书,否则他们将无法验证签名。

作为SP,您不知道IDP在流程中的位置,因此您必须检查签名是否对两个列出的证书中的任何一个进行验证。

答案 1 :(得分:0)

您可能(总是)看到两个的另一个原因是您可能有一个来自反向通道证书(例如,credentials / idp-backchannel.crt和credentials / idp-signing.crt)

我认为有很多SP不知道该怎么做。如果您不需要反向频道,可以考虑将其删除(或者至少不将其移交给精选元数据中的人)。

根据我的经验,烦人的(真烦人的)是所有三个都是关于同一件事的单独证书(至少在我的情况下),并且这三个证书同时有效(这肯定会导致困难)。

根据https://wiki.shibboleth.net/confluence/display/IDP30/Installation

安装过程将为您建议或生成以下信息:

(开始引用)

  • IdP的entityID(您可以如上所述覆盖)
  • 单独的自签名密钥/证书对:
    • 邮件签名
    • 保护Web服务连接,通常在端口8443上
    • 由其他系统加密数据以供IdP解密
  • 一个密钥和密钥版本文件,用于保护IdP为自己使用而生成的cookie和其他数据(这是一个特殊的Java密钥库,类型为&#34; JCEKS&#34;)
  • 一些初始样本元数据,描述了合作伙伴SP使用的IdP,一旦进行了审核和补充
  • 基于此信息的一组默认IdP配置文件

(结束语)