21 апр. 2025 г.
В следующей статье приведены пошаговые инструкции по использованию сертификата подписи кода с Azure KeyVault. Примечание: Если это не то решение, которое вы ищете, найдите свое решение в строке поиска выше.
Форум CA и браузеров выпустил новые рекомендации BR, которые затрагивают сертификаты подписи кода. Закрытые ключи и сертификаты подписи кода должны храниться на облачном HSM, физическом HSM или токене безопасности. Токен или HSM должны соответствовать стандарту FIPS 140 Level 2 или 3.
После введения новых правил традиционный способ подписания сборок с помощью PFX-файла устарел, и разработчики столкнулись с проблемами, связанными с подписанием исполняемых файлов. Эта статья поможет вам подписать исполняемые файлы Windows с помощью сертификата подписи кода GlobalSign, Azure Key Vault и Azure SignTool.
Учетная запись Microsoft Azure. Если у вас еще нет учетной записи Azure, начните здесь.
Хранилище ключей Azure. Дополнительные сведения см. в разделе Создание хранилища ключей.
Сертификат подписи кода от публичного центра сертификации, например GlobalSign. Нажмите здесь, чтобы получить сертификат кодовой подписи GlobalSign.
Загрузите Azure Signtool для подписи исполняемых файлов.
Зарегистрируйте новое приложение Azure, чтобы в дальнейшем подключить его к хранилищу ключей для подписи кода: -
Войдите в портал Microsoft Azure.
Перейдите в Azure Active Directory (теперь Microsoft Entra ID). (Если вы не можете найти, нажмите More Services).
В левой колонке нажмите Регистрация приложений.
Нажмите кнопку Новая регистрация.
Дайте имя своему приложению, а затем нажмите на кнопку "Зарегистрировать".
После регистрации заявки скопируйте и вставьте куда-нибудь идентификатор заявки (клиента) и идентификатор арендатора, так как они понадобятся вам позже в процессе подписания кода.
На левой боковой панели нажмите Аутентификация.
Далее в разделе Дополнительные параметры установите значение Да для опции Разрешить публичные клиентские потоки и нажмите кнопку Сохранить.
Теперь сгенерируйте клиентский секрет, который обеспечит учетные данные во время подписания кода. Для этого выполните следующие действия:
Нажмите на пункт левого меню Сертификаты и
Нажмите на кнопку Новый секрет клиента
Укажите описание клиентского секрета, установите срок действия в соответствии с вашими потребностями, а затем нажмите кнопку Добавить
Примечание: Скопируйте значение нового клиентского секрета и сохраните его в безопасном месте. Потому что оно доступно только один раз, а затем маскируется по соображениям безопасности
Теперь вам нужно включить доступ к вашему приложению в Microsoft Azure Key-vault:
Перейдите в хранилище ключей, содержащее сертификат подписи кода, который вы хотите использовать для файла windows с подписью кода. Затем щелкните политики доступа.
Теперь создайте политики доступа, нажав на кнопку "Создать".
Добавьте следующие разрешения:
Выберите и включите опцию Sign в разделе Key Permissions.
Включите опцию Получить в разделе Разрешения на сертификат.
После добавления разрешений перейдите на вкладку "Принципы". Затем найдите и выберите приложение, которое вы создали в предыдущем разделе
Когда приложение будет найдено, выберите его и нажмите кнопку "Выбрать" внизу.
Нажмите на Далее.
Нажмите на кнопку "Создать" в конце страницы.
Теперь политики доступа созданы, и вы готовы к кодовой подписи файлов windows.
Получите сертификат подписи кода на основе HSM от GlobalSign (Standard или EV), а затем следуйте приведенной ниже статье поддержки для генерации и импорта сертификата подписи кода GlobalSign в Key Vault:
Чтобы установить Azure Signtool, убедитесь, что установлена последняя версия .NET SDK, затем откройте Administrator PowerShell и выполните следующую команду:
dotnet tool install --global AzureSignTool
Примечание: Если при загрузке Azure Signtool вы получаете описанную ниже ошибку, выполните следующие шаги:
Ошибка - пакет Nuget не найден во время выполнения (dotnet tool install --global AzureSignTool).
Попробуйте выполнить следующие шаги для установки пакета Nuget
dotnet nuget add source https://api.nuget.org/v3/index.json -n http://nuget.org
Выполнив все описанные выше действия, вы сможете подписывать исполняемые файлы на базе windows. Но прежде чем приступить к подписанию кода, убедитесь, что нижеприведенная информация находится в свободном доступе:
На портале Azure URI вашего хранилища ключей
Дружественное имя сертификата подписи кода в Key Vault:
Значение идентификатора приложения (клиента) и идентификатора арендатора из шага 1:
Значение client-Secret, которое вы создали на шаге 2:
Используя инструмент Azure Sign, вам нужно выполнить следующую команду для подписи кода и временной метки исполняемого файла на базе Windows. Замените все значения в кавычках в следующей команде на ваши учетные данные, сгенерированные в описанных выше шагах:
azuresigntool sign -kvu "KEY-VAULT-URI" -kvc CERTIFICATE-NAME -kvi "APPLICATION-CLIENT-ID" -kvs "CLIENT-SECRET" --azure-key-vault-tenant-id "tenant-ID" -tr http://timestamp.globalsign.com/tsa/advanced -td sha256 "PATH-TO-EXECUTABLE"
Если вы правильно выполнили описанные выше действия, вы увидите следующий результат: -
info: AzureSignTool.Program[0]
==> File: test.exe
Signing file test.exe
info: AzureSignTool.Program[0]
==> File: test.exe
Signing completed successfully for file test.exe
Примечание: Эти шаги предназначены для подписания exe, для каждого кода командная строка может отличаться, см. статью Microsoft.
Если при загрузке Azure Signtool вы получаете ошибку, выполните следующие действия:
Ошибка - пакет Nuget не найден при запуске (dotnet tool install --global AzureSignTool)
Решение: Установите пакет Nuget с помощью следующей команды
dotnet nuget add source https://api.nuget.org/v3/index.json -n http://nuget.org
Похожие статьи:
https://learn.microsoft.com/en-us/windows/msix/desktop/cicd-keyvault
Сканируйте конечные точки, чтобы найти все ваши сертификаты.
Войти / ЗарегистрироватьсяПроверьте установку сертификата на наличие проблем и уязвимостей SSL.