SAML2 - 使用中间证书升级 SP
SAML2 - Upgrade SP with intermediate certificate
我正在尝试升级 Shibboleth 服务提供商 (sp) 上面向浏览器的证书。现有设置在 shibboleth2.xml 和 sp-metadata.xml 中都有一个证书。实施的片段如下:
shibboleth2.xml:
<CredentialResolver type="Chaining">
<CredentialResolver type="File" key="sp-key.pem" certificate="sp-cert.pem"/>
</CredentialResolver>
sp-metadata.xml:
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>sp.com</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>ABCxyz
az1234
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
shibboleth2.xml中提到的sp-cert.pem文件是这样的:
-----BEGIN CERTIFICATE-----
ABCxyz
az1234
-----END CERTIFICATE-----
现在我已经生成了一个新证书,其中包括 sp.com 的域证书 (sp-cert-dom.pem) 和中间证书 (sp-cert-int.pem),内容如下:
sp-cert-dom.pem
-----BEGIN CERTIFICATE-----
abcdef
123456
-----END CERTIFICATE-----
sp-cert-int.pem
-----BEGIN CERTIFICATE-----
UVWXYZ
xa9900
-----END CERTIFICATE-----
我已将两个证书组合成一个文件 (sp-cert1.pem),如下所示:
-----BEGIN CERTIFICATE-----
abcdef
123456
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
UVWXYZ
xa9900
-----END CERTIFICATE-----
然后我更新了 shibboleth2.xml(在将更改通知所有利益相关者之后)以指向新证书:
<CredentialResolver type="Chaining">
<CredentialResolver type="File" key="sp-key1.pem" certificate="sp-cert1.pem"/>
</CredentialResolver>
但是我一直在想办法用新证书更新 sp-metadata.xml。现在我有以下问题:
1.我真的必须同时提供域和中间证书的详细信息,还是域证书就足够了?
2.如果答案是"both",我的sp-metadata.xml在下面的选项中应该是怎样的?
(a) 同一个 ds:KeyInfo
元素的多个 ds:X509Certificate
元素。
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>sp.com</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>abcdef
123456
</ds:X509Certificate>
<ds:X509Certificate>UVWXYZ
xa9900
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
(b) 多个 ds:KeyInfo
元素。
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>sp.com</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>abcdef
123456
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>Symantec Class 3 Secure Server CA - G4</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>UVWXYZ
xa9900
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
提前致谢。
PS:我确实查看了 Validating a signature without intermediate certificate,但我的问题没有得到明确的答案。
SP 不关心面向浏览器的证书。面向浏览器的证书(和密钥)通过 Apache httpd[1] 或 IIS [2] 进行管理。 Shibboleth SP 软件使用的密钥和证书通常是自签名的,因为它实际上仅用作存储 public 密钥的载体,因此它通常是 10-20 年的证书。
[1] https://httpd.apache.org/docs/2.4/ssl/
[2] https://technet.microsoft.com/en-us/library/cc732230(v=ws.10).aspx
我正在尝试升级 Shibboleth 服务提供商 (sp) 上面向浏览器的证书。现有设置在 shibboleth2.xml 和 sp-metadata.xml 中都有一个证书。实施的片段如下:
shibboleth2.xml:
<CredentialResolver type="Chaining">
<CredentialResolver type="File" key="sp-key.pem" certificate="sp-cert.pem"/>
</CredentialResolver>
sp-metadata.xml:
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>sp.com</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>ABCxyz
az1234
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
shibboleth2.xml中提到的sp-cert.pem文件是这样的:
-----BEGIN CERTIFICATE-----
ABCxyz
az1234
-----END CERTIFICATE-----
现在我已经生成了一个新证书,其中包括 sp.com 的域证书 (sp-cert-dom.pem) 和中间证书 (sp-cert-int.pem),内容如下:
sp-cert-dom.pem
-----BEGIN CERTIFICATE-----
abcdef
123456
-----END CERTIFICATE-----
sp-cert-int.pem
-----BEGIN CERTIFICATE-----
UVWXYZ
xa9900
-----END CERTIFICATE-----
我已将两个证书组合成一个文件 (sp-cert1.pem),如下所示:
-----BEGIN CERTIFICATE-----
abcdef
123456
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
UVWXYZ
xa9900
-----END CERTIFICATE-----
然后我更新了 shibboleth2.xml(在将更改通知所有利益相关者之后)以指向新证书:
<CredentialResolver type="Chaining">
<CredentialResolver type="File" key="sp-key1.pem" certificate="sp-cert1.pem"/>
</CredentialResolver>
但是我一直在想办法用新证书更新 sp-metadata.xml。现在我有以下问题:
1.我真的必须同时提供域和中间证书的详细信息,还是域证书就足够了?
2.如果答案是"both",我的sp-metadata.xml在下面的选项中应该是怎样的?
(a) 同一个 ds:KeyInfo
元素的多个 ds:X509Certificate
元素。
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>sp.com</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>abcdef
123456
</ds:X509Certificate>
<ds:X509Certificate>UVWXYZ
xa9900
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
(b) 多个 ds:KeyInfo
元素。
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>sp.com</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>abcdef
123456
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>Symantec Class 3 Secure Server CA - G4</ds:KeyName>
<ds:X509Data>
<ds:X509SubjectName>CN=sp.com,C=US</ds:X509SubjectName>
<ds:X509Certificate>UVWXYZ
xa9900
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
提前致谢。
PS:我确实查看了 Validating a signature without intermediate certificate,但我的问题没有得到明确的答案。
SP 不关心面向浏览器的证书。面向浏览器的证书(和密钥)通过 Apache httpd[1] 或 IIS [2] 进行管理。 Shibboleth SP 软件使用的密钥和证书通常是自签名的,因为它实际上仅用作存储 public 密钥的载体,因此它通常是 10-20 年的证书。
[1] https://httpd.apache.org/docs/2.4/ssl/
[2] https://technet.microsoft.com/en-us/library/cc732230(v=ws.10).aspx