mage.exe манифест подписи с сертификатом, хранящимся в AWS CloudHSM
Я пытаюсь подписать манифест, используя mage.exe
с сертификатом, который хранится в Amazon CloudHSM.
У меня установлен Windows-клиент Amazon CloudHSM, который добавляет 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
, экспортировал его в проект, взломал проект достаточно, чтобы его скомпилировать, и я могу подписать его взломанным mage.exe
, Мне нужно было только -CertHash
параметр, а не -CryptoProvider
, Я не уверен, что это проблема с разрешениями, потому что кое-что из того, что я вынул для компиляции, было атрибутами сборки и делало его неподписанным.
Я не считаю это решенным, потому что я бы предпочел не использовать взломанную версию mage.exe
для нашего производственного применения. Кроме того, я даже не подтвердил, что могу подписать приложение и манифесты развертывания таким образом, чтобы приложение ClickOnce могло правильно развернуться. Это просто дополнительная информация для поиска решения с "авторизованным" mage.exe
,
3 ответа
Я столкнулся с тем же самым... Я считаю, что есть ошибка в MAGE
Ошибка регистрируется здесь: https://github.com/Microsoft/dotnet/issues/986
Мне тоже пришлось перекомпилировать mage и переназначить на.NET 4.7.2
Мне пришлось использовать -CertFile, -CryptoProvider и -KeyContainer, чтобы заставить его подписать, я не мог понять, как заставить -CertHash работать...
Обратите внимание, чтобы найти контейнер ключей:
Бежать
certutil-магазин мой
Затем найдите свой сертификат и затем используйте значение "Key Container = XXXXX"
У меня была аналогичная проблема с использованием мага для подписи файла манифеста. В моем случае закрытый ключ хранится в SafeNet USB eToken, однако полученная мной ошибка была другой ("Этот сертификат не содержит закрытого ключа...").
В конце концов, я заставил его работать, декомпилировав mage (используя JetBrains dotPeek), изменив одну (соответствующую) строку кода и снова перекомпилировав ее.
См. Мой комментарий на https://github.com/Microsoft/dotnet/issues/986 для получения дополнительной информации.
Мы используем mage.exe, интегрированный с AWS CloudHSM в моей компании, и он отлично работает без перекомпиляции mage. Однако для этого мы используем HSM-прокси под названием GaraSign . Подписывающий клиент общается с GaraSign, который обрабатывает всю аутентификацию, авторизацию, применение политик и т. д. В случае успеха хэш данных отправляется от клиента на сервер, который затем выгружается в HSM для подписи. Наши клиенты настроены с помощью GaraSign KSP вместо CloudHSM KSP.