无法访问HSM中的密钥以进行sh256签名,但可以进行sha1签名

时间:2018-01-24 16:03:11

标签: signtool hsm authenticode

如何在签名为sha256时启用对HSM中密钥的访问权限?

当我签署sha1签名工具时,正确地将证书密钥从HSM中拉出,但如果我改为" / fd sha256"密钥不能在容器中找到。我确定signtool可以访问容器,但是某些策略必须在sha256情况下阻止它。

我的错误:

SignTool错误:找不到指定的私钥容器。

Sha256命令:

signtool.exe sign /f mycert.crt
/csp "Luna Cryptographic Services for Microsoft Windows" 
/kc mycontainer /tr http://timestamp.digicert.com /td sha256 
/fd sha256 signed-file.exe

Sha256命令,有效:

signtool.exe sign /f mycert.crt
/csp "Luna Cryptographic Services for Microsoft Windows" 
/kc mycontainer /tr http://timestamp.digicert.com /td sha256 
/fd sha1 signed-file.exe

/ debug / v 选项不提供其他信息。

如果我使用makecert生成一个新的自签名证书,那么该命令会生成一个CSP可用于sha1或sha256的容器。 Luna的CSP \ keymap.exe工具允许我管理容器和密钥。我可以创建新的签名或交换,然后将密钥与它们关联。

生成证书并将kes上传到HSM

# Create Cert and store keys on HSM in a container called "noi1-501706key"
makecert -sk noi1-501706key -sp "Luna Cryptographic Services for Microsoft Windows" -r 
-n "CN=noi1- 501706" -ss TestStore noi1-501706.cer

# make self signed
Cert2Spc noi1-501706.cer noi1-501706.spc

使用Program Files \ Safenet \ Luna Client \ CSP \ keymap

  • 创建新容器
  • 将pub / private与新容器关联

    使用新容器sha1工作,sha256失败。所有查看这两个容器的尝试都显示它们是相同的。

2 个答案:

答案 0 :(得分:0)

根据第7章和第34章;将Microsoft HCK(Windows Server 2012)与Luna HSM集成在一起#34;我注意到以下内容让我觉得通过Linux上的HSM工具创建CSR而不是makecert我们被KSP / CNG阻止了。

因此,我们永远不会让Luna客户端找到证书的密钥。我们需要获得新证书或迁移到新的HSM并获得新证书。这是因为AWS CloudHSM Classic使用配置为阻止导出密钥的硬件,而不管策略如何。没有变更托管这里的钥匙。

为了将Luna SA硬件安全模块与Microsoft HCK集成,必须使用Luna CSP“用于Microsoft Windows的Luna Cryptographic Services”来生成证书。该 必须签署证书,并且签名者证书必须存在于“受信任的根证书颁发机构”中。您可以使用自签名证书的CA签名证书。

答案 1 :(得分:0)

检查KeyContainer,公共和私有密钥对象标签(cmu.exe listkeymap.exe浏览对象)。公共和私有密钥标签应采用以下格式:

  1. 容器名称:ContainerName
  2. 私钥:S-ContainerName
  3. 公钥:S-ContainerName

使用cmu.exe setattribute更改标签。