我遵循了使用YubiHSM密钥存储提供程序可用的这里生成代码签名证书的教程。使用certreq -new sign.inf sign.req创建证书签名请求(CSR)之后,将在YubiHSM中创建一个新的非对称密钥,以及该密钥与YubiHSM密钥存储提供程序(KSP)中的证书之间的关联。在此之后,我可以使用类似于signtool sign /sha1 <certificate hash> <binary name>的东西来签署我的二进制文件。
但是,当我导出此证书并将其导入到另一台计算机时,证书没有关联的私钥。输入certutil -repairstore my <certificate hash>是没有帮助的。据我所知,KSP只存储到YubiHSM的链接,而不是实际的私钥本身。所以我想我需要在KSP中以某种方式创建这个关联。
发布于 2022-02-22 14:07:49
最后,我设法解决了以下问题:在安装和配置YubiHSM KSP之后,安装导出的证书。安装证书后,请使用以下方法检查其有效性:
certutil -verifystore my <certificate hash>如果仍然看不到已安装的证书,请使用以下方法手动添加该证书:
certutil -addstore -f "My" "MyCertificate.cer"找到导入的证书后,需要手动将证书绑定到私钥。这是因为密钥没有与证书一起存储,而且Windows不会自动在两者之间创建关联。
certutil -repairstore my <certificate hash>现在,您应该能够使用Key Container命令在certutil -verifystore字段中看到正确的键标签。
在此之后,您应该能够开始使用签名工具对二进制文件进行签名。但是,我必须添加/sm标志才能使其工作。
signtool sign /sm /a /n "<CertificateName>" /fd sha256 path-to-binary-to-sign.exehttps://stackoverflow.com/questions/71124486
复制相似问题