2011-06-29 56 views
2

我們有一個我們創建的實用程序來簽署我們的XBAP清單文件。這是它執行以下代碼:Authenticode代碼簽名非常慢

cert = new X509Certificate2(certFilePath, password, X509KeyStorageFlags.MachineKeySet); 
SecurityUtilities.SignFile(cert, null, manifest.SourcePath); 

SignFile方法需要超過兩分鐘才能完成。我們以前使用Thawte authenticode證書籤署我們的清單。切換到VeriSign後,此問題開始出現。另外,當Visual Studio在構建過程中籤署XBAP清單時,通常需要7到9分鐘才能完成。

我試過把私鑰放在本地計算機商店。我已經嘗試在中間證書頒發機構存儲中放入中級VeriSign代碼簽名證書。

有沒有人遇到過這種情況和/或有什麼想法來解決這個問題?

回答

1

我相信我的問題是由執行此代碼的服務器上缺少互聯網訪問引起的。使用數據包分析器,我注意到在簽署應用程序和/或Windows試圖訪問威瑞信的certificate revocation lists(CRL)和它的Online Certificate status Protocol(OCSP)。這些行動已經超時。此代碼簽名發生不止一次,因此導致延遲時間更長。允許通過火災訪問威瑞信應該解決這個問題。

2

我向微軟的ClickOnce傢伙詢問了你的問題(儘管它不是關於C/O本身)。他說,如果你在打印時間戳證書,它可能會嘗試連接到時間戳服務器,這可能會減慢速度。您可以在項目的其中一個選項卡中的Visual Studio中指定它,並在簽名時使用它。

0

實際上,除了連接互聯網並檢查CRL之外,您還需要在服務器上安裝證書。我們有一臺服務器存在類似的問題。這並不需要一分鐘或兩分鐘時間來執行SignFile方法,但每次通話需要10秒鐘,並且需要20-30秒才能完成。在我安裝了證書之後,這個方法現在每次調用需要大約二百分之一秒...因此,對方法的兩個或三個調用需要幾秒鐘的時間。