EV代码签名极其缓慢

时间:2017-05-16 14:15:23

标签: java code-signing jar-signing

自2月起,GlobalSign仅颁发EV代码签名证书。这意味着代码签名必须使用硬件令牌(Safenet USB eTokens)完成。

由于我不得不切换到EV代码签名,我注意到在签署我的应用程序时会有大量的时间增加。从使用常规Java密钥库的几分钟到使用eToken的超过40分钟。

根据GlobalSign网站的说法,我应该在下面签名:

jarsigner -keystore NONE -storetype PKCS11 -tsa http://timestamp.globalsign.com/scripts/timestamp.dll -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.config -storepass mypass myapp.jar myalias

我联系了GlobalSign的支持,但他们无法帮助我,因为签名确实有效......只是非常慢。

我尝试的事情:

  • 替代TSA
  • 在没有TSA的情况下签名
  • 将项目放在jarsigner位置的同一磁盘和分区上
  • 使用命令行代替maven配置文件(在我的IDE中配置)

对缓慢签名没有任何影响。有没有人有其他想法或有同样的问题?

2 个答案:

答案 0 :(得分:3)

我曾多次与GlobalSign联系。

答案是:

  • 在内部签署一个包含大约1900个类文件的jar的表现 ==>对于 usb硬件安全令牌,大​​约需要3分钟正常

比较:

  • 使用带有证书和私钥的本地pfx 文件 5秒

为什么这么慢?

通过Globalsign回答:对于每个类文件,将从令牌中检索证书,如果证书被撤销,将检查OCSP。

使用过的硬件安全令牌:金雅拓SafeNet 5110。

Globalsign告诉我,如果速度更快,我可以尝试使用另一个令牌。

我想知道,如果https://www.yubico.com/products/yubihsm/可能更快?有人有这方面的经验吗?其他人如何在java中编码签名?

答案 1 :(得分:3)

尝试将-sigalg SHA512withRSA添加到您的jarsigner选项中。

问题似乎在于,PKCS11实际上正在使用令牌来计算哈希。 (如此评论Java : PKCS11 SafeNet eToken 5110 : Slow; and How to code for EBICS signature mechanism A006?中所述)

Gemalto SafeNet 5110硬件仅支持SHA256,因此设置SHA512会强制对哈希进行软件计算,从而大大加快了工作速度。