自 2 月起,GlobalSign 只颁发 EV 代码签名证书。这意味着代码签名必须使用硬件 token (Safenet USB eTokens) 完成。
自从我不得不切换到 EV 代码签名后,我注意到签署应用程序的时间大大增加了。从使用常规 Java keystore 的几分钟到使用 eToken 的 40 多分钟。
根据 GlobalSign 网站,我应该按如下方式签署我的 jar :
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 中配置)
没有任何影响缓慢的签名。有没有人有其他想法或遇到过同样的问题?
最佳答案
尝试将 -sigalg SHA512withRSA
添加到您的 jarsigner 选项中。
问题似乎是,PKCS11 实际上是使用 token 来计算哈希值。 (如评论中所述 Java : PKCS11 SafeNet eToken 5110 : Slow; and How to code for EBICS signature mechanism A006? )
Gemalto SafeNet 5110 硬件仅支持 SHA256,因此设置 SHA512 会强制软件计算哈希值,从而大大加快速度。
关于java - EV 代码签名极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44003975/