Подписание кода с помощью Azure Key-Vault и Azure Signtool

21 апр. 2025 г.

Подписание кода с помощью Azure Key-Vault и Azure Signtool

Введение 

В следующей статье приведены пошаговые инструкции по использованию сертификата подписи кода с Azure KeyVault. Примечание: Если это не то решение, которое вы ищете, найдите свое решение в строке поиска выше. 

Форум CA и браузеров выпустил новые рекомендации BR, которые затрагивают сертификаты подписи кода. Закрытые ключи и сертификаты подписи кода должны храниться на облачном HSM, физическом HSM или токене безопасности. Токен или HSM должны соответствовать стандарту FIPS 140 Level 2 или 3.   

После введения новых правил традиционный способ подписания сборок с помощью PFX-файла устарел, и разработчики столкнулись с проблемами, связанными с подписанием исполняемых файлов. Эта статья поможет вам подписать исполняемые файлы Windows с помощью сертификата подписи кода GlobalSign, Azure Key Vault и Azure SignTool.  

Пререквизиты:  

  • Учетная запись Microsoft Azure. Если у вас еще нет учетной записи Azure, начните здесь.  

  • Сертификат подписи кода от публичного центра сертификации, например GlobalSign. Нажмите здесь, чтобы получить сертификат кодовой подписи GlobalSign.  

  • Загрузите Azure Signtool для подписи исполняемых файлов. 

Шаг 1: Зарегистрируйте новое приложение Azure 
 

Зарегистрируйте новое приложение Azure, чтобы в дальнейшем подключить его к хранилищу ключей для подписи кода: -  
 

  1. Войдите в портал Microsoft Azure. 

  2. Перейдите в Azure Active Directory (теперь Microsoft Entra ID). (Если вы не можете найти, нажмите More Services). 

  3. В левой колонке нажмите Регистрация приложений. 

  4. Нажмите кнопку Новая регистрация. 

  5. Дайте имя своему приложению, а затем нажмите на кнопку "Зарегистрировать". 

  6. После регистрации заявки скопируйте и вставьте куда-нибудь идентификатор заявки (клиента) и идентификатор арендатора, так как они понадобятся вам позже в процессе подписания кода. 

  7. На левой боковой панели нажмите Аутентификация. 

  8. Далее в разделе Дополнительные параметры установите значение Да для опции Разрешить публичные клиентские потоки и нажмите кнопку Сохранить. ​​​​​ 


     

Шаг 2: Создание секрета клиента  
 

Теперь сгенерируйте клиентский секрет, который обеспечит учетные данные во время подписания кода. Для этого выполните следующие действия:  

  1. Нажмите на пункт левого меню Сертификаты и  

  2. Нажмите на кнопку Новый секрет клиента 

  3.  Укажите описание клиентского секрета, установите срок действия в соответствии с вашими потребностями, а затем нажмите кнопку Добавить 
     
     
    Примечание: Скопируйте значение нового клиентского секрета и сохраните его в безопасном месте. Потому что оно доступно только один раз, а затем маскируется по соображениям безопасности 
     

Шаг 3: Включите доступ к приложениям в Azure Key Vault 
 

Теперь вам нужно включить доступ к вашему приложению в Microsoft Azure Key-vault: 
 

  1. Перейдите в хранилище ключей, содержащее сертификат подписи кода, который вы хотите использовать для файла windows с подписью кода. Затем щелкните политики доступа.  

  2. Теперь создайте политики доступа, нажав на кнопку "Создать". 

  3.  Добавьте следующие разрешения: 

    1.  Выберите и включите опцию Sign в разделе Key Permissions. 

    2. Включите опцию Получить в разделе Разрешения на сертификат. 

  4. После добавления разрешений перейдите на вкладку "Принципы". Затем найдите и выберите приложение, которое вы создали в предыдущем разделе 

  5. Когда приложение будет найдено, выберите его и нажмите кнопку "Выбрать" внизу.  

  6. Нажмите на Далее. 

  7. Нажмите на кнопку "Создать" в конце страницы.  

    1. Теперь политики доступа созданы, и вы готовы к кодовой подписи файлов windows. 

Шаг 4: Получите и импортируйте сертификат кодирования GlobalSign в хранилище ключей Azure: 
 

Получите сертификат подписи кода на основе HSM от GlobalSign (Standard или EV), а затем следуйте приведенной ниже статье поддержки для генерации и импорта сертификата подписи кода GlobalSign в Key Vault:  

https://support.globalsign.com/digital-certificates/digital-certificate-installation/Code-Signing-certificate-setup-in-Azure-Key-vault 

Шаг 5: Установите Azure Signtool:  

 

  1. Чтобы установить 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  
     

Шаг 6: Теперь подпишите исполняемые файлы: 

 

  1. Выполнив все описанные выше действия, вы сможете подписывать исполняемые файлы на базе windows. Но прежде чем приступить к подписанию кода, убедитесь, что нижеприведенная информация находится в свободном доступе:  

    1. На портале Azure URI вашего хранилища ключей 

    2. Дружественное имя сертификата подписи кода в Key Vault:  

    3. Значение идентификатора приложения (клиента) и идентификатора арендатора из шага 1:

    4. Значение client-Secret, которое вы создали на шаге 2:  

  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" 

  3. Если вы правильно выполнили описанные выше действия, вы увидите следующий результат: - 

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  

https://dotnet.microsoft.com/en-us/download/dotnet/5.0   

​​​​​​https://support.globalsign.com/digital-certificates/digital-certificate-installation/Code-Signing-certificate-setup-in-Azure-Key-vault 

Система оповещения GlobalSign

Просмотр последних системных оповещений.

Просмотр оповещений

Инструмент инвентаризации сертификатов (CIT)

Сканируйте конечные точки, чтобы найти все ваши сертификаты.

Войти / Зарегистрироваться

Тест конфигурации SSL

Проверьте установку сертификата на наличие проблем и уязвимостей SSL.

Связаться с поддержкой