SAML2 - 使用中间证书升级SP

时间:2016-06-27 12:37:01

标签: x509certificate saml-2.0 shibboleth

我正在尝试升级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)和中间证书(s​​p-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。如果答案是&#34;两者都是&#34;,我的sp-metadata.xml在以下选项中应该如何?

(a)相同ds:X509Certificate元素的多个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: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,但没有得到我问题的明确答案。

1 个答案:

答案 0 :(得分:0)

SP不关心面向浏览器的证书。面向证书(和密钥)的浏览器通过Apache httpd [1]或IIS [2]进行管理。 Shibboleth SP软件使用的密钥和证书通常是自签名的,因为它实际上仅用作存储公钥的工具,因此它通常是10 - 20年的证书。

[1] https://httpd.apache.org/docs/2.4/ssl/
[2] https://technet.microsoft.com/en-us/library/cc732230(v=ws.10).aspx