自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的支持,但他们无法帮助我,因为签名确实有效......只是非常慢。
我尝试的事情:
对缓慢签名没有任何影响。有没有人有其他想法或有同样的问题?
答案 0 :(得分:3)
我曾多次与GlobalSign联系。
答案是:
比较:
为什么这么慢?
通过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会强制对哈希进行软件计算,从而大大加快了工作速度。