Подпись манифеста mage.exe сертификатом, хранящимся в AWS CloudHSM

Я пытаюсь подписать манифест с использованием 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, экспортировал его в проект, взломал проект достаточно, чтобы он скомпилировался, и я могу подписать взломанный mage.exe. Мне нужен был только параметр -CertHash, а не -CryptoProvider. Я не уверен, что это проблема с разрешениями, потому что некоторые из того, что я взял, чтобы заставить его скомпилировать, были атрибутами сборки и без подписи.

Я не считаю, что это решено, потому что я бы не стал использовать взломанную версию mage.exe для нашего производственного приложения. Кроме того, я даже не подтвердил, что могу подписывать манифесты приложения и развертывания таким образом, чтобы приложение ClickOnce могло развертываться должным образом. Это просто дополнительная информация для поиска решения с "авторизованным" mage.exe.


person MikeJansen    schedule 18.02.2019    source источник


Ответы (3)


Я столкнулся с тем же самым ... Я считаю, что в MAGE есть ошибка

Здесь регистрируется ошибка: https://github.com/Microsoft/dotnet/issues/986

Мне тоже пришлось перекомпилировать маг и перенастроить его на .NET 4.7.2.

Мне пришлось использовать -CertFile, -CryptoProvider и -KeyContainer, чтобы подписать его, я не мог понять, как заставить -CertHash работать ..

Примечание, чтобы найти контейнер для ключей:

Бегать

certutil -store my

Затем найдите свой сертификат и используйте значение «Key Container = XXXXX».

person SshMan    schedule 27.03.2019

У меня была аналогичная проблема с использованием мага для подписи файла манифеста. В моем случае закрытый ключ хранится в SafeNet USB eToken, однако ошибка, которую я получил, была другой («Этот сертификат не содержит закрытого ключа ...»). В конце концов, я заставил его работать, декомпилировав mage (используя JetBrains dotPeek), изменив одну (соответствующую) строку кода и перекомпилируя ее снова.
См. мой комментарий по адресу https://github.com/Microsoft/dotnet/issues/986#issuecomment-534970170 для получения дополнительных сведений.

person Hardy    schedule 24.09.2019

В моей компании мы используем mage.exe, интегрированный с AWS CloudHSM, и он отлично работает без перекомпиляции mage. Однако для этого мы используем прокси HSM под названием GaraSign. Подписывающий клиент общается с GaraSign, который обрабатывает всю аутентификацию, авторизацию, применение политик и т. Д. В случае успеха хэш данных отправляется от клиента на сервер, который затем выгружается в HSM для подписи. Наши клиенты настроены с использованием GaraSign KSP вместо CloudHSM KSP.

person Hmmmmm    schedule 24.12.2020