Microsoft 验证码签名 ( EV ) + 谷歌云 HSM?



我们公司在eToken USB加密狗上使用EV协同设计证书,但我们目前计划将我们的构建和签名过程移动到云中的虚拟服务器,一切都很好,除了一件事,它是共同设计过程,GlobalSign允许证书存储在USB加密狗或HSM上。我认为HSM可以完成这项工作,有人可以建议云HSM的最佳实践吗?我发现,谷歌云提供谷歌云HSM,但如何将signtool.exe与此服务连接?

如果你不介意使用其他签名工具,Jsign支持开箱即用的Google Cloud HSM(不需要PKCS#11模块):

jsign --storetype GOOGLECLOUD --storepass <api-access-token> 
--keystore projects/first-rain-123/locations/global/keyRings/mykeyring 
--alias test --certfile full-chain.pem application.exe

(免责声明:我是这个开源项目的主要作者)

困难的部分是让GlobalSign为存储在Google Cloud HSM中的私钥颁发证书(这通常涉及审核过程,以证明密钥是由HSM正确生成的,或提供证明证书)。

首先,您需要按照此处的步骤在 Google Cloud KMS 中创建支持 HSM 的密钥:

gcloud kms keys create ${KEY_NAME} 
--keyring ${KEY_RING} 
--location ${LOCATION} 
--purpose "encryption" 
--protection-level "hsm"

然后,您可以使用此PKCS #11模块(最近由Google发布)以及支持此API的任何工具,例如osslsigncode:

osslsigncode sign 
-pkcs11engine /path/to/system/pkcs11.so 
-pkcs11module google-kms-pkcs11-module.so 
-cert certificate.crt 
-key "pkcs11:token=${KEY_NAME};object=key" 
-n "Your App Name" -in yourapp.exe -out yourapp-signed.exe

尚未测试此命令,但根据我的经验,osslsigncode 与 pkcs11-proxy 配合得很好,后者是另一个 PKCS #11 模块,用于使用网络上插入另一台机器的令牌对 EV 代码进行签名。

尽管上述命令是使用"Linux语法"编写的,但osslsigncode和Google KMS模块也在GitHub上发布了预编译的Windows二进制文件。

目前没有办法做到这一点。如果将 EV 证书放在物理加密狗上,则需要在本地网络上设置物理生成代理来处理生成的签名部分。

最新更新