我之前使用本地安装的密钥库签署了jar文件,作为自动构建的一部分。我现在面临着必须使用基于硬件的设备,由于最近对最小代码签名要求的更改,并且虽然我已经想出如何做到这一点,但我看到极度放缓。
就像一个例子,一个包含180个类的jar文件,我以前可以签约大约半秒钟,现在大约需要30秒。随着时间的推移,我看到我的令牌设备的访问指示灯每秒闪烁几次,大概一次就是jar文件中的每个类。
有没有办法加快速度,例如某种方法可以减少对整个jar文件的单一访问的令牌访问?
答案 0 :(得分:3)
这不是一个答案,但评论太长了:
如果您对任何文件的令牌访问权限的假设是正确的,那么这意味着文件的哈希值也会在设备中计算,而不仅仅是签名。
您的PKCS11设备是否有一个日志选项,可以显示哪些pkcs11调用是设备接收(哈希操作在PKCS11中称为C_Digest)来确认? 也许使用java keytool with opensc pkcs#11 provider only works with debug option enabled中提到的选项(我还没试过)
由于我不知道是否有任何方法可以告诉jarsigner通过软件进行哈希并通过硬件进行签名,如果你找不到更好的答案,也许你可以自己编写提供者:(http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/HowToImplAProvider.html):
Signature signature = Signature.getInstance("SHA1withRSA", "SunPKCS11")
等等。并且模拟KeyStoreSpi。然后将您的提供者作为参数调用jarsigner。
答案 1 :(得分:1)
尝试将-sigalg SHA512withRSA添加到jarsigner选项中。
有关更多信息,请检查我的answer相关问题