signtool не может подписать двоичный файл ключом от AWS CloudHSM

Мы собираемся использовать сервис AWS CloudHSM для обеспечения безопасности всех сертификатов подписи кода и выполнения подписи кода на нашем сервере сборки. Наш сервер сборки - Windows Server 2010, поэтому я установил клиент AWS CloudHSM там. Я активировал кластер, и все утилиты командной строки работают должным образом: я могу войти в систему, добавить ключи, найти ключи и т. Д. Мы хотели бы продолжать использовать signtool для подписи наших двоичных файлов, поэтому я подумал, что мы можем использовать поставщиков хранилищ ключей (KSP) для AWS CloudHSM, которые устанавливаются вместе с другими инструментами.

Поставщики Cavium KSP и CNG были успешно установлены и отображаются в списке поставщиков шифрования Windows. Я определил переменные среды, как сказано здесь ( https: //docs.aws.amazon.com/cloudhsm/latest/userguide/ksp-library-prereq.html ).

Я добавил сертификат через certutil в хранилище HSM:

Certutil -CSP "Cavium Key Storage Provider" -user -importPFX  "certificate.pfx"
SDK Version: 2.03
Enter PFX password:
Certificate "myCertificate" added to store.

CertUtil: -importPFX command completed successfully.

Сертификат был успешно добавлен, и он появляется, когда я выполняю команду findKey из консоли key_mgmt_util.exe.

После этого я попытался подписать двоичный файл сертификатом, как сказано в https://docs.microsoft.com/en-us/windows-hardware/test/hlk/user/hlk-signing-with-an-hsm :

signtool_64 sign /n myCertificate "test.exe"

или

signtool sign /sha1 4F555EF9FAB8E86A2F84ACF325362A29FB64AF66 "test.exe"

но я получил ошибку, которую не могу исправить

    SDK Version: 2.03
    Done Adding Additional Store
    SignTool Error: An error occurred while attempting to load the signing
    certificate from: C:\temp\test.exe

Я также попытался указать поставщика хранилища ключей и контейнер ключей

signtool sign /csp "Cavium Key Storage Provider" /k CARoot-877f51a1-90ee-4c10-8feb-02925caab4fb test.exe

который вернулся ко мне

SignTool Error: An unexpected internal error has occurred.
Error information: "Could not associate private key with certificate." (-2147024
891/0x80070005)

и

signtool sign /f certificate.pem /csp "Cavium Key Storage Provider"
/k CARoot-877f51a1-90ee-4c10-8feb-02925caab4fb test.exe

с другим сообщением об ошибке

SignTool Error: The specified private key does not match the public key of the selected certificate.

Мне кажется, что-то не так с сертификатом из хранилища, но я понятия не имею, как это исправить. test.exe существует на диске и может быть подписан с помощью signtool с использованием сертификата другого поставщика или при указании pfx-файла.

Что я делаю не так? Совместим ли клиент Amazon CloudHSM с signtool или как можно подписать двоичный файл в Windows, используя Amazon CloudHSM в качестве хранилища ключей?

4 голоса | спросил toohtik 26 J000000Thursday18 2018, 15:53:35

3 ответа


0
Я только что написал статью « Подписание исполняемых файлов с помощью Microsoft SignTool.exe с использованием сертификатов на основе AWS CloudHSM», которая описывает этот сценарий.Обобщить:Вы должны убедиться, что у вас установлены последние двоичные файлы для CloudHSM.Убедитесь, что при создании сертификата (если вы подписываете себя), что соответствующий контейнер ключей в Windows создан.Запустите certutil -repairstore, если это необходимо.При использовании SignTool убедитесь, что вы указали сертификат HASHЕсли вам нужна дополнительная помощь, обратитесь в службу поддержки AWS как всегда или поищите на форумах AWS.
ответил Patrick Palmer 23 Jpm1000000pmWed, 23 Jan 2019 21:50:59 +030019 2019, 21:50:59
0
Я написал в службу поддержки AWS, и они ответили:«Эта проблема, по-видимому, вызвана попыткой сохранить сертификат на HSM и ссылкой на сертификат с помощью SignTool. Хотя команда certutil показывает« CertUtil: -importPFX команда выполнена успешно. », CloudHSM в настоящее время не поддерживает хранение сертификатов. ЭтоОднако эта функция будет добавлена, а когда она будет выпущена, она будет добавлена ​​на страницу истории версий.Вы должны иметь возможность использовать SignTool, ссылаясь на сертификат локально ( .crt /.cer) и используя закрытый ключ сертификата, хранящийся в HSM:c:> signtool sign /f certname.cer /csp «Поставщик хранилища ключей Cavium» /k kontainer_name test.exeНо этот подход не работает и для меня.Так что я все еще жду их помощи
ответил toohtik 29 +03002018-10-29T14:14:12+03:00312018bEurope/MoscowMon, 29 Oct 2018 14:14:12 +0300 2018, 14:14:12
0
Ты пробовалаЯ не знаю, каким должно быть название контейнера.Обычно есть инструмент для сопоставления между разделом HSM и контейнером.В cloudhsm v2 документы по этой теме можно найти по ее https://docs.aws.amazon.com/cloudhsm/latest/userguide/ksp-library-prereq.htmlhttps://docs.microsoft.com/en-us/windows/desktop/seccrypto/signtoolПоискав в реестре Cavium я нашелПоставщик Cavium CNG и поставщик ключей Cavium.Может быть, вам нужен CNG, который отображается на KSP?Кроме того, документ для проекта находится на github, и авторы документа, похоже, являются авторами https://github.com/awsdocs/aws-cloudhsm-user-guide/blob/master/doc_source/ksp-library-install.md.Вы запускали инструмент регистрации csp ksp?
ответил Eva Brigid 2 52018vEurope/Moscow11bEurope/MoscowFri, 02 Nov 2018 21:54:28 +0300 2018, 21:54:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132