mage.exe使用存储在 AWS CloudHSM 中的证书进行清单签名



我正在尝试使用mage.exe和存储在 Amazon CloudHSM 中的证书对清单进行签名。

我安装了Amazon CloudHSM Windows Client,它添加了Cavium Key Storage ProviderCavium CNG Provider提供程序。 我可以在 CloudHSM 中使用我的证书与signtool.exe进行签名,但我无法让mage.exe工作。 我有 NETFX 4.7.2 的mage.exe,因此它具有-CryptoProvider参数。

我尝试为-CryptoProvider指定上述两个提供程序:

"C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.7.2 Toolsmage.exe" -Sign myapp.exe.manifest -CertHash <thumbpring> -CryptoProvider "Cavium Key Storage Provider" -KeyContainer my

但我得到:

内部错误,请重试。指定的提供程序类型无效。

调用mage.exe以使用备用密钥存储提供程序对清单进行签名的正确参数是什么?

注意:证书必须位于 HSM 中。 不能选择在其他存储中使用证书。

注 2:由于我可以使用signtool.exe进行签名,因此可以访问证书,CloudHSM 设置正确等。 此问题似乎特定于使用mage.exe访问该证书。

更新:我使用JetBrains dotPeek反汇编了.NET Framework 4.7.2mage.exe,将其导出到一个项目中,对项目进行了足够的黑客攻击以使其编译,并且我能够与被黑客入侵的mage.exe签名。我只需要-CertHash参数,而不需要-CryptoProvider.我不确定这是否是权限问题,因为我为编译它而取出的一些内容是程序集属性并使其未签名。

我不认为这个问题已经解决了,因为我宁愿不为我们的生产应用程序使用被黑客入侵的mage.exe版本。 此外,我甚至还没有确认我是否可以以允许 ClickOnce 应用正确部署的方式对应用程序和部署清单进行签名。 这只是使用"授权"mage.exe查找解决方案的更多信息。

我遇到了同样的事情...我相信法师有错误

此处记录的错误: https://github.com/Microsoft/dotnet/issues/986

我也不得不重新编译 mage,并重新定位到 .NET 4.7.2

我不得不使用 -CertFile、-CryptoProvider 和 -KeyContainer 来让它签名,我不知道如何让 -CertHash 工作。

查找密钥容器的注意事项:

Certutil -store my

然后查找证书,然后使用"密钥容器 = XXXXX"值

我在使用 mage 对清单文件进行签名时遇到了类似的问题。就我而言,私钥存储在SafeNet USB eToken中,但是我得到的错误是不同的("此证书不包含私钥...")。
最终,我通过反编译mage(使用JetBrains dotPeek),更改一行(相关)代码并再次重新编译它来工作。
有关更多详细信息,请参阅我在 https://github.com/Microsoft/dotnet/issues/986#issuecomment-534970170 的评论。

我们使用mage.exe与我公司的AWS CloudHSM集成,无需重新编译mage即可正常工作。但是,我们使用名为GaraSign的HSM代理来执行此操作。签名客户端与 GaraSign 通信,GaraSign 处理所有身份验证、授权、策略实施等。如果成功,数据的哈希将从客户端发送到服务器,然后卸载到 HSM 进行签名。我们的客户配置了GaraSign KSP,而不是CloudHSM KSP。

最新更新