簡體   English   中英

通過X509Certificate加載時,私鑰證書不支持數字簽名

[英]Private key certificate does not support digital signature when loaded via X509Certificate

最近,我面臨着與Java Web服務交換SOAP消息的需求,在Java Web Service中,必須進行數字簽名的消息才能進行通信。 正如預期的那樣,此過程是用私鑰簽名的消息,以便對方站點可以通過公用站點等對其進行驗證。這次唯一的區別是,對方是管理局本身。

我最初使用以下命令創建證書請求

openssl req -new -newkey rsa:1024 -keyout myprivatekey.pem  -out myrequest.pem 

上面的命令創建私鑰和我的證書請求。 之后,我( 通過他們的站點 )向他們發送證書請求“ myrequest.pem”,以便他們授權證書並創建最終( 有效 )證書。 當我收到答案時( 例如,授權證書“ complete.pem” ),以及先前生成的myprivatekey.pem,我創建了.pfx私鑰,應准備立即使用。

openssl pkcs12 -export -out myprivatekey.pfx -in complete.pem -inkey myprivatekey.pem -name "testcertificate"

上面創建了myprivatekey.pfx,我已針對證書成功進行了驗證。 當我嘗試使用以下代碼通過Studio 2005和WSE 3.0簽名消息時,問題就開始了:

X509Certificate2 cert = new X509Certificate2(path,"pass");
X509SecurityToken certToken = new X509SecurityToken(cert);

certToken的SupportsDigitalSignature屬性設置為false,因此我無法簽名消息,因此無法繼續。 請注意,帶有我自己發行並加載到X509SecurityToken中的自簽名證書和私鑰的相同過程似乎支持數字簽名( 屬性為true )。

我想這與我從他們那里獲得的最終授權證書有關,但是我開始懷疑自己做錯了什么。

有什么想法要檢查嗎?

將證書安裝到Windows證書存儲中(在資源管理器中雙擊PFX文件)。 然后轉到Internet Explorer中的“ Internet設置”對話框,然后在“目錄”選項卡上找到“證書”按鈕。 在打開的對話框中,找到已安裝的證書並瀏覽其詳細信息。 檢查密鑰用法字段。 它必須包含數字簽名(或類似的詞)。

更新:正如我在下面的評論中提到的那樣,如果是由另一方生成證書,則可以詢問他們的軟件在處理您的請求時是否正確設置了“密鑰用法”擴展。 通常,設置密鑰使用是CA的工作,因為它們授權您出於某些目的使用此證書。

您的證書可能不包含數字簽名作為有效的密鑰用法。 您可以使用以下命令進行檢查:

openssl x509 -in complete.pem -purpose

當您使用-x509開關生成自簽名證書時,會“請求”不同的默認擴展名。 檢查您的配置文件中的OpenSSL ,尤其是req_extensions和x509_extensions部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM