2009-09-22 54 views
1

我爲了建立SSO和功能作爲服務提供者與我的身份提供我需要指定我想在交換XML元數據用來簽名和加密的證書文件。但是,如何創建我的證書的加密和編碼表示(如下圖所示),因此它可以被放入XML。我需要在這裏通過什麼流程?加密和SAML元X.509證書的編碼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> 

回答

1

<X509Certificate>主體是X509證書的DER編碼的數據。由於數據類型是base64Binary,因此需要使用Base64編碼。

-----BEGIN CERTIFICATE----- 
MIIDijCCAnICCQDXfWAafSjGzDANBgkqhkiG9w0BAQQFADCBhjELMAkGA1UEBhMC 
... 
meTdn90sElH+yhWNRi6XtXirsTjDXQhudWWJ8r5NPkTBE7lDtg+6SBfDCrWFsw== 
-----END CERTIFICATE----- 

這是在頁眉和頁腳之間的PEM文件中的相同的東西。如果你從CA獲得證書,它通常已經以PEM格式。如果沒有,您可以使用OpenSSL或Java Keytool進行轉換。

+0

這樣我就可以把它複製到頭和腳線之間的.der文件?或者我有換行或什麼的? – Gobliins 2016-11-03 10:23:54

+1

@Gobliins,DER是二進制格式。 PEM是位於BEGIN和END行之間的DER的base64表示形式。因爲我們需要的是base64編碼DER,您可以通過一個base64編碼器運行.der文件,也可以刪除BEGIN和從PEM格式文件的終止線。 – Bass 2017-09-20 10:37:56