我命令设置SSO并使用我的身份提供程序作为服务提供程序运行我需要指定我要用于在交换的元数据XML文件中进行签名和加密的证书。但是,如何创建证书的加密和编码表示(如下所示),以便将其放入XML中。我需要在这里完成哪些流程?
<q1:KeyDescriptor use="signing">
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>MIICZDCCAdGg.....IQ0jOz8mmZToZD7ab9==</X509Certificate>
</X509Data>
</KeyInfo>
</q1:KeyDescriptor>
<q1:KeyDescriptor use="encryption">
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>MIICZDCCAdGg......IQ0jOz8mmZToZD7ab==</X509Certificate>
</X509Data>
</KeyInfo>
</q1:KeyDescriptor>
答案 0 :(得分:1)
<X509Certificate>
的正文是X509证书的DER编码数据。由于数据类型是base64Binary,因此需要进行Base64编码。
-----BEGIN CERTIFICATE-----
MIIDijCCAnICCQDXfWAafSjGzDANBgkqhkiG9w0BAQQFADCBhjELMAkGA1UEBhMC
...
meTdn90sElH+yhWNRi6XtXirsTjDXQhudWWJ8r5NPkTBE7lDtg+6SBfDCrWFsw==
-----END CERTIFICATE-----
页眉和页脚之间的PEM文件中的内容相同。如果您从CA获得证书,则通常采用PEM格式。如果没有,您可以使用OpenSSL或Java Keytool进行转换。