Authenticode代码签名极其缓慢

时间:2011-06-29 16:23:21

标签: clickonce code-signing xbap

我们创建了一个用于签署XBAP清单文件的实用程序。这是它执行的以下代码:

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

SignFile方法需要两分多钟才能完成。我们以前使用Thawte authenticode证书来签署我们的清单。切换到VeriSign后,此问题开始出现。此外,当Visual Studio在构建过程中签署XBAP清单时,通常需要7到9分钟才能完成。

我尝试将私钥放在本地计算机商店中。我已经尝试将中间VeriSign代码签名证书放在中间证书颁发机构商店中。

有没有人以前经历过这个问题和/或有关于如何解决这个问题的想法?

3 个答案:

答案 0 :(得分:3)

我向微软的ClickOnce人询问了你的问题(即使它不是关于C / O本身)。他说,如果你给证书加上时间戳,它可能会试图连接到时间戳服务器,这可能会减慢速度。您可以在Visual Studio中的项目选项卡中指定该项目,并在签名时使用它。

答案 1 :(得分:0)

我认为我的问题是由执行此代码的服务器上缺少互联网访问引起的。使用数据包分析器,我注意到在签名时,应用程序和/或Windows正在尝试访问VeriSign的certificate revocation lists(CRL)并且它是Online Certificate status Protocol(OCSP)。这些行动正在超时。此代码签名不止一次发生,因此导致延迟更长。允许通过火灾访问VeriSign应该解决这个问题。

答案 2 :(得分:0)

实际上,除了具有互联网连接和检查CRL之外,您还需要在服务器上安装证书。我们有一个服务器有类似的问题。执行SignFile方法并不需要一分钟或两分钟,但每次通话需要10秒钟,并且需要20-30秒。安装证书后,该方法现在每次调用大约需要两百分之一秒...因此,对方法的两次或三次调用只需几分之一秒。