java - 使用硬件 token 加速 jarsigner?

标签 java pkcs#11 jarsigner

我以前使用本地安装的 keystore 签署 jar 文件作为自动构建的一部分。由于最近对最小代码签名要求的更改,我现在不得不使用基于硬件的设备,虽然我已经想出如何去做,但我发现速度极慢。

举个例子,一个包含 180 个类的 jar 文件,我以前可以在大约半秒内登录,现在需要大约 30 秒。在进行过程中,我看到我的 token 设备的访问指示灯每秒闪烁几次,大概是针对 jar 文件中的每个类闪烁一次。

有什么办法可以加快速度吗?有什么方法可以将 token 访问减少到对整个 jar 文件的单一访问?

最佳答案

这不是答案,但评论太长了:

如果您对访问任何文件的 token 的假设是正确的,那么这意味着设备中也正在计算文件的哈希值,而不仅仅是签名。

您的 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。

关于java - 使用硬件 token 加速 jarsigner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43685060/

相关文章:

android - Jarsigner 未被识别为内部或外部命令

java - 有没有一个工具可以按提交日期和提交人员查看 Subversion 中所有项目的 checkin 情况

java - java中的长二进制字符串算术

java - 使用适用于 OpenShift 的 Jboss Tools 插件进行部署会生成错误 invalid target release : 1. 8

java - 将一个属性文件中的值获取到另一个属性文件中(JAVA)

c++ - i2d_X509_REQ_INFO 没有正确转换 req_info 结构

c++ - 使用 pkcs#11 从智能卡读取文本文件

c - 在 Linux 上连接硬件安全模块

Windows 上的 Android 签名应用程序

java - JarSigner 在 java 中完成?