SAML2 元数据 - 多重签名证书
SAML2 Metadata - Multiple Signing Certificates
我正在查看 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>
...
我明白为什么它会列出签名和加密证书,但我如何确定在我的服务提供商中使用哪个签名证书?为什么会有两个签名证书?
提前致谢!
当 IDP 更改它的签名证书时,它首先在元数据中与旧证书并行发布新证书。当 idp 实际切换到使用新证书时,所有 SP 都必须知道新证书,否则他们将无法验证签名。
作为 SP,您不知道 IDP 在流程中的哪个位置,因此您必须检查签名是否对列出的两个证书中的任何一个有效。
您可能(总是)看到两个的另一个原因是您可能有一个来自反向通道证书(例如 credentials/idp-backchannel.crt 和 credentials/idp-signing.crt)
我认为有很多 SP 并不知道在那里该做什么。如果您不需要反向渠道,您可以考虑将其删除(或者至少不要将其交给您策划的元数据中的人)。
根据我的经验,烦人的(真的烦人的)事情是所有三个都是关于同一件事的单独证书(至少在我的情况下),并且所有三个同时有效(这肯定会导致困难).
根据https://wiki.shibboleth.net/confluence/display/IDP30/Installation:
安装过程会为您提示或生成以下信息:
(开始报价)
- IdP 的实体 ID(您可以如上所述覆盖)
- 单独的自签名 key/certificate 对:
- 消息签名
- 保护网络服务连接,通常在端口 8443
- 其他系统加密数据以供 IdP 解密
- 一个秘密密钥和密钥版本文件,用于保护 IdP 为自己使用而生成的 cookie 和其他数据(这是一个特殊的 Java 类型 "JCEKS" 密钥库)
- 一些描述 IdP 的初始示例元数据,供合作伙伴 SP 使用,一旦它被审查和补充
- 一组基于此信息的默认 IdP 配置文件
(引用结束)
我正在查看 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>
...
我明白为什么它会列出签名和加密证书,但我如何确定在我的服务提供商中使用哪个签名证书?为什么会有两个签名证书?
提前致谢!
当 IDP 更改它的签名证书时,它首先在元数据中与旧证书并行发布新证书。当 idp 实际切换到使用新证书时,所有 SP 都必须知道新证书,否则他们将无法验证签名。
作为 SP,您不知道 IDP 在流程中的哪个位置,因此您必须检查签名是否对列出的两个证书中的任何一个有效。
您可能(总是)看到两个的另一个原因是您可能有一个来自反向通道证书(例如 credentials/idp-backchannel.crt 和 credentials/idp-signing.crt)
我认为有很多 SP 并不知道在那里该做什么。如果您不需要反向渠道,您可以考虑将其删除(或者至少不要将其交给您策划的元数据中的人)。
根据我的经验,烦人的(真的烦人的)事情是所有三个都是关于同一件事的单独证书(至少在我的情况下),并且所有三个同时有效(这肯定会导致困难).
根据https://wiki.shibboleth.net/confluence/display/IDP30/Installation:
安装过程会为您提示或生成以下信息:
(开始报价)
- IdP 的实体 ID(您可以如上所述覆盖)
- 单独的自签名 key/certificate 对:
- 消息签名
- 保护网络服务连接,通常在端口 8443
- 其他系统加密数据以供 IdP 解密
- 一个秘密密钥和密钥版本文件,用于保护 IdP 为自己使用而生成的 cookie 和其他数据(这是一个特殊的 Java 类型 "JCEKS" 密钥库)
- 一些描述 IdP 的初始示例元数据,供合作伙伴 SP 使用,一旦它被审查和补充
- 一组基于此信息的默认 IdP 配置文件
(引用结束)