我正在尝试使用mage.exe
存储在 Amazon CloudHSM 中的证书对清单进行签名。
我安装了 Amazon CloudHSM Windows 客户端,它添加了Cavium Key Storage Provider
和Cavium CNG Provider
提供程序。我可以signtool.exe
在 CloudHSM 中使用我的证书进行签名,但我无法开始mage.exe
工作。我有mage.exe
NETFX 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
。