【发布时间】:2019-07-12 03:41:02
【问题描述】:
我正在尝试使用 mage.exe 和存储在 Amazon CloudHSM 中的证书签署清单。
我安装了 Amazon CloudHSM Windows 客户端,它添加了 Cavium Key Storage Provider 和 Cavium CNG Provider 提供程序。我可以使用 CloudHSM 中的证书与 signtool.exe 签名,但我无法让 mage.exe 工作。我有 NETFX 4.7.2 的 mage.exe,所以它有 -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,将其导出到项目中,对项目进行了足够的破解以使其能够编译,并且我能够使用被破解的 mage.exe 进行签名.我只需要-CertHash 参数而不需要-CryptoProvider。我不确定这是否是权限问题,因为我为使其编译而取出的一些内容是程序集属性并使其未签名。
我没有考虑解决这个问题,因为我不想在我们的生产应用程序中使用mage.exe 的黑客版本。另外,我什至还没有确认我可以以允许 ClickOnce 应用程序正确部署的方式签署应用程序和部署清单。这只是使用“授权”mage.exe 查找解决方案的更多信息。
【问题讨论】:
标签: clickonce mage amazon-cloudhsm