使用硬件令牌加速jarsigner?

问题描述 投票:4回答:2

我之前使用本地安装的密钥库签署了jar文件,作为自动构建的一部分。我现在面临着必须使用基于硬件的设备,由于最近对最小代码签名要求的改变,并且虽然我已经想出如何做到这一点,但我看到了极端的减速。

就像一个例子,一个包含180个类的jar文件,我以前可以签约大约半秒钟,现在大约需要30秒。随着时间的推移,我看到令牌设备的访问指示灯每秒闪烁几次,大概是jar文件中每个类一次。

有没有办法加快速度,例如某种方法可以减少对整个jar文件的单一访问的令牌访问?

java pkcs#11 jarsigner
2个回答
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):

  • 实现软件哈希(MessageDigestSpi,只是将调用转发给默认的软件java提供程序)
  • 和设备签名(SignatureSpi,只是将调用转发到java中配置的PKCS11提供程序)。我认为这是Signature signature = Signature.getInstance("SHA1withRSA", "SunPKCS11")等。并且模拟KeyStoreSpi。

然后使用您的提供者作为参数调用jarsigner。


1
投票

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

有关详细信息,请查看我的answer相关问题

© www.soinside.com 2019 - 2024. All rights reserved.