我有两个 Windows 系统与 AWS CloudHSM v2(cavium HSM)相关联。一方面,我生成了 CSR,并接受/添加了使用该 CSR 购买的证书。我可以签名并通过密钥容器从 HSM 正确提取私钥。
另一个签名是我的生产签名系统,它与现有证书一起正常工作,但是当我尝试添加新证书时,没有Key Container
设置。我习惯于需要运行修复过程,但在这种情况下,我没有提供文件的 ID。
- 认证
"\Program Files\Amazon\CloudHSM\tools\set_cloudhsm_credentials.exe" --user REDACTED --password "..."
- 添加证书
certutil -addstore my my-new-cert.crt
- 转储商店详细信息
certutil -store my > cert_store_details.txt
Serial Number: REDACTED
Issuer: CN=DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1, O=DigiCert, Inc., C=US
NotBefore: 1/25/2022 12:00 AM
NotAfter: 1/25/2023 11:59 PM
Subject: CN=REDACTED, C=US, SERIALNUMBER=REDACTED, OID.1.3.6.1.4.1.311.60.2.1.2=Delaware, OID.1.3.6.1.4.1.311.60.2.1.3=US, OID.2.5.4.15=Private Organization
Non-root Certificate
Cert Hash(sha1): REDACTED
No key provider information
Cannot find the certificate and private key for decryption.
通常,我会创建一个 repair.txt 像这样在和之间使用Key Container
id但是,我没有其中一个,所以我不走运=
&
Container
[Properties]
11 = "" ; Add friendly name property
2 = "{text}" ; Add Key Provider Information property
_continue_="Container=&"
_continue_="Provider=Cavium Key Storage Provider&"
_continue_="Flags=0&"
_continue_="KeySpec=2"
如果我只是进行维修certutil -repairstore my "REDACTED"
,那么我会被要求提供智能卡。哦,这台机器是 Windows Core 2016(所以没有 UI 或有限的 UI)。
好的,这是来自 AWS 支持的答案 - 希望他们会将其添加到他们的文档中
确定私钥和公钥的 CloudHSM 文件句柄(您可以通过从证书中转储模数并使用 hsm 工具寻找密钥来完成此操作。但是,我在生成 CSR 之前和之后报告了句柄,因此我可以添加它们到我的安全文档 - 所以我不需要这样做
创建 KSP 容器
这应该输出类似于:“Represented 1 keypairs in Cavium Key Storage Provider”。
如果您收到错误消息“n3fips_password is not set”,请确保在您的系统上设置 HSM 的登录凭据,如下面的 [4] 中所述。
“Cavius Key Storage Provider”可能不是您的密钥容器的名称。此名称是从第一步生成的输出中检索的。
如果容器创建成功,输出应该类似于以下内容:
certutil verb -repairstore
更新证书序列号。该命令看起来类似于以下内容:你会期待这样的事情
如果
Key Container = CNGRSAPriv-...d
显示正确的容器,则您知道证书 KSP 关系良好如果您看到
Private key is NOT exportable
并且Encryption test passed
知道您正在使用正确的文件句柄。如果您使用 signtool,则需要添加
/sm
以强制它使用机器存储而不是用户存储,因为上述过程会生成与机器存储绑定的容器。没有选择。