0

我按照教程使用 YubiHSM 密钥存储提供程序生成代码签名证书,此处提供。在使用新的非对称密钥创建证书签名请求 (CSR) 之后,certreq -new sign.inf sign.req在 YubiHSM 中创建了此密钥与 YubiHSM 密钥存储提供程序 (KSP) 中的证书之间的关联。之后,我可以使用类似signtool sign /sha1 <certificate hash> <binary name>.

但是,当我导出此证书并将其导入另一台机器时,该证书没有关联的私钥。打字certutil -repairstore my <certificate hash>没有帮助。据我了解,KSP 仅存储指向 YubiHSM 的链接,而不是实际的私钥本身。所以我想我需要以某种方式在 KSP 中创建这个关联。

4

1 回答 1

0

我终于设法解决了以下问题:安装和配置 YubiHSM KSP 后,安装导出的证书。安装证书后检查其有效性:

certutil -verifystore my <certificate hash>

如果您仍然看不到已安装的证书,请尝试使用以下方法手动添加:

certutil -addstore -f "My" "MyCertificate.cer"

找到导入的证书后,需要手动将证书绑定到私钥。这是因为密钥没有与证书一起存储,并且 Windows 不会自动在两者之间创建关联。

certutil -repairstore my <certificate hash>

现在您应该能够使用命令在Key Container字段中看到正确的键标签。certutil -verifystore

之后,您应该能够开始使用 signtool 对您的二进制文件进行签名。但是,我必须添加/sm标志才能使其工作。

signtool sign /sm /a /n "<CertificateName>" /fd sha256 path-to-binary-to-sign.exe
于 2022-02-22T14:07:49.270 回答