2016-12-06 93 views
1

我有一個適用於我公司(* .mycompany.com)的通配符證書,現在已完成數字簽名安裝程序可執行文件的任務。 我將Signtool.exe與包含私鑰和證書文件(包括中間證書)的生成pfx文件一起使用,但它始終告訴我沒有證書符合所有給定條件。 (在調試輸出中,我可以看到通配符證書被EKU過濾器過濾,中間和根證書被私鑰過濾器過濾)。是否可以使用通配符SSL證書進行代碼簽名?

Windows證書管理器說,通配符證書只能用於服務器和客戶端身份驗證。我無法將代碼簽名添加到中間證書所具有的用途中。

是否有可能使用此通配符證書進行代碼簽名?我錯過了什麼嗎?

+3

您的證書沒有代碼簽名EKU,因爲您已經想清楚了。沒有它你不能簽署你的可執行文件。 – pepo

回答

4

如果您有權訪問密鑰,則始終可以使用該密鑰。但是在這種情況下,用於簽名的代碼必須被告知忽略擴展密鑰用法。而且 - 更有問題 - 驗證程序也必須跳過此檢查。

但由於您的證書錯過代碼簽名的擴展密鑰用法,由於擴展密鑰用法目前,X.509 v3 certificate specs下面的部分實際上是:

如果擴展存在,則該證書只能用於 用於指定的目的之一。如果多個目的 表明申請不需要承認所有目的指示, 只要預期的目的是存在的。使用 應用程序的證書可能會要求擴展密鑰使用擴展爲 ,並指出特定的用途以便 證書可被該應用程序接受。

現在作爲id-kp-serverAuth可能存在,並且因爲id-kp-codeSigning不是,所以證書不能使用。

由於這些擴展是由證書頒發機構簽署的簽署您不能簡單地更改證書。如果您確實更改了擴展密鑰使用情況,那麼驗證證書內的簽名將失敗。


平時注意密鑰和證書是單一用途。如果您需要代碼簽名證書,您可能需要創建一個新的密鑰對&證書請求以購買新證書。

+0

Nitpick低於最小值編輯:X(點)509不是X5(點)09 –

+0

謝謝。我確實最終購買了一個效果很好的新證書:) –