1

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

我安装了 Amazon CloudHSM Windows 客户端,它添加了Cavium Key Storage ProviderCavium CNG Provider提供程序。我可以signtool.exe在 CloudHSM 中使用我的证书进行签名,但我无法开始mage.exe工作。我有mage.exeNETFX 4.7.2 所以它有-CryptoProvider参数。

我已尝试为以下两个提供程序指定-CryptoProvider

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\mage.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.2 mage.exe,将其导出到一个项目,破解该项目足以让它编译,我可以用被破解的 .NET Framework 签名mage.exe。我只需要-CertHash参数而不是-CryptoProvider. 我不确定这是否是权限问题,因为我为使其编译而采取的一些措施是程序集属性并使其未签名。

我没有考虑解决这个问题,因为我不想mage.exe在我们的生产应用程序中使用被黑的版本。另外,我什至还没有确认我可以以允许 ClickOnce 应用程序正确部署的方式签署应用程序和部署清单。这只是使用 "authorized" 找到解决方案的更多信息mage.exe

4

3 回答 3

0

我遇到了同样的事情......我相信MAGE中存在错误

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

我也必须重新编译法师,并重新定位到 .NET 4.7.2

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

注意查找密钥容器:

certutil - 存储我的

然后查找您的证书,然后使用“Key Container = XXXXX”值

于 2019-03-27T18:35:51.617 回答
0

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

于 2019-09-24T10:36:48.163 回答
0

We use mage.exe integrated with AWS CloudHSM at my company and it works just fine without any recompiling of mage. However, we use an HSM proxy called GaraSign to do it. The signing client talks to GaraSign which handles all the authentication, authorization, policy enforcement, etc. If successful, the hash of the data is sent from the client to the server which is then offloaded to the HSM for signing. Our clients are configured with the GaraSign KSP instead of the CloudHSM KSP.

于 2020-12-24T07:51:51.913 回答