Поделиться через


Настройка интеграции подписей для использования доверенного подписывания

Доверенный подписывание в настоящее время поддерживает следующие интеграции подписывания:

  • SignTool
  • GitHub Actions
  • Задачи Azure DevOps
  • PowerShell для Authenticode
  • Azure PowerShell (политика ci для управления приложениями для бизнеса)
  • Пакет SDK для доверенного подписывания

Мы постоянно работаем над поддержкой дополнительных интеграции подписей. Мы обновляем поддерживаемый список интеграции при наличии дополнительных интеграций.

В этой статье объясняется, как настроить каждую поддерживаемую интеграцию подписывания доверенных подписей.

Настройка signTool для использования доверенного подписывания

В этом разделе объясняется, как настроить SignTool для использования с доверенным подписыванием.

Необходимые компоненты

Для выполнения задач из этой статьи необходимо следующее:

  • Учетная запись доверенной подписи, проверка удостоверения и профиль сертификата.
  • Отдельное или групповое назначение роли подписывающего профиля доверенного сертификата подписи.
  • Обновление Windows 10 версии 1809/октябрь 2018 г. или более поздней версии, Windows 11 (все версии) или Windows Server 2016 или более поздней версии

Установщик клиентских средств доверенного подписывания

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

  1. Пакет SDK для Windows SignTool.exe (минимальная версия: 10.0.2261.755)
  2. Среда выполнения .NET 8
  3. Распространяемый компонент Microsoft Visual C++
  4. Доверенный клиент подписывания Dlib

Чтобы упростить эту настройку, существует пакет установщика MSI, доступный для скачивания вместе с Setup.exe.

Установка из Диспетчер пакетов Windows

Установщик клиентских средств доверенного подписывания доступен в Диспетчер пакетов Windows (WinGet).

Примечание.

Winget предоставляется по умолчанию в Windows 11 и современных версиях Windows 10. Более ранние версии Windows не поддерживаются. Инструкции по установке см. в документации winget.

winget install -e --id Microsoft.Azure.TrustedSigningClientTools

Этот -e параметр заключается в том, чтобы убедиться, что установлен официальный пакет клиентских средств доверенной подписи. Эта команда устанавливает последнюю версию по умолчанию. Чтобы указать версию, добавьте -v <version> нужную версию в команду.

Установка из PowerShell

Чтобы установить клиентские средства доверенной подписи с помощью PowerShell, запустите PowerShell от имени администратора и выполните следующую команду:

$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri "https://download.microsoft.com/download/6d9cb638-4d5f-438d-9f21-23f0f4405944/TrustedSigningClientTools.msi" -OutFile .\TrustedSigningClientTools.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I TrustedSigningClientTools.msi /quiet'; Remove-Item .\TrustedSigningClientTools.msi

Сводка действий по настройке вручную

  1. Скачайте и установите SignTool.
  2. Скачайте и установите среду выполнения .NET 8.
  3. Скачайте и установите пакет dlib доверенной подписи.
  4. Создайте JSON-файл для предоставления учетной записи доверенной подписи и профиля сертификата.
  5. Чтобы подписать файл, вызовите SignTool.

Скачивание и установка SignTool

Для подписывания доверенных подписей требуется использовать SignTool для подписывания файлов в Windows, в частности версию SignTool.exe, которая находится в пакете SDK для Windows 10.0.2261.755 или более поздней версии. Вы можете установить полный пакет SDK для Windows 10 с помощью установщика Visual Studio или скачать его отдельно.

Чтобы скачать и установить SignTool, выполните приведенные ниже действия.

  1. Скачайте последнюю версию SignTool и Средств сборки Windows NuGet в Microsoft.Windows.SDK.BuildTools.

  2. Установите SignTool из пакета SDK для Windows (минимальная версия: 10.0.2261.755, версия пакета SDK для Windows 20348 не поддерживается в нашем dlib).

Другим вариантом является использование последнего файла nuget.exe для скачивания и извлечения последнего пакета Средств сборки Пакета Sdk для Windows с помощью PowerShell:

  1. Скачайте nuget.exe , выполнив следующую команду скачивания:

    Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe  
    
  2. Скачайте и извлеките пакет NuGet средств сборки пакета Sdk для Windows, выполнив следующую команду установки:

    .\nuget.exe install Microsoft.Windows.SDK.BuildTools -Version 10.0.22621.3233 -x
    

Скачивание и установка среды выполнения .NET 8.0

Компоненты, которые signTool использует для интерфейса с доверенным подписыванием, требуют установки среды выполнения .NET 8.0, требуется только базовая среда выполнения .NET 8.0. Убедитесь, что вы устанавливаете правильную среду выполнения платформы в зависимости от версии SignTool, которую вы планируете запустить. Кроме того, можно просто установить оба

Например:

Скачивание и установка пакета dlib доверенного подписывания

Чтобы скачать и установить пакет dlib доверенного подписывания (файл .zip):

  1. Скачайте пакет dlib доверенного подписывания.

  2. Извлеките содержимое dlib доверенного подписывания и установите его на узле подписывания в выбранном каталоге. Узел должен быть узлом, в котором вы используете SignTool для подписывания файлов.

Еще одним вариантом является скачивание пакета dlib доверенного подписывания с помощью NuGet, аналогичного пакету NuGet средств сборки пакета SDK для Windows:

.\nuget.exe install Microsoft.Trusted.Signing.Client -Version 1.0.53 -x

Создание JSON-файла

Чтобы подписаться с помощью доверенного подписывания, необходимо указать сведения о учетной записи доверенной подписи и профиле сертификатов, созданных в рамках предварительных требований. Эти сведения можно указать в JSON-файле, выполнив следующие действия.

  1. Создайте файл JSON (например, metadata.json).

  2. Добавьте в JSON-файл определенные значения для учетной записи доверенной подписи и профиля сертификата. Дополнительные сведения см . в файле metadata.sample.json , включенном в пакет dlib доверенного подписывания, или используйте следующий пример:

    {
      "Endpoint": "<Trusted Signing account endpoint>",
      "CodeSigningAccountName": "<Trusted Signing account name>",
      "CertificateProfileName": "<Certificate profile name>",
      "CorrelationId": "<Optional CorrelationId value>"
    }
    

    Значение "Endpoint" URI должно быть универсальным кодом ресурса (URI), который соответствует региону, в котором вы создали учетную запись доверенной подписи и профиль сертификата при настройке этих ресурсов. В таблице показаны регионы и соответствующие URI.

    Область/регион Поля класса региона Значение URI конечной точки
    Восточная часть США EastUS https://eus.codesigning.azure.net
    Западная часть США3 [1] WestUS3 https://wus3.codesigning.azure.net
    Центрально-западная часть США WestCentralUS https://wcus.codesigning.azure.net
    западная часть США 2 WestUS2 https://wus2.codesigning.azure.net
    Северная Европа NorthEurope https://neu.codesigning.azure.net
    Западная Европа WestEurope https://weu.codesigning.azure.net

    1 Необязательное "CorrelationId" поле — это непрозрачное строковое значение, которое можно предоставить для сопоставления запросов подписей с собственными рабочими процессами, такими как идентификаторы сборки или имена компьютеров.

Проверка подлинности

Эта задача выполняет проверку подлинности с помощью DefaultAzureCredential, которая пытается выполнить ряд методов проверки подлинности в порядке. Если один метод завершается ошибкой, он пытается выполнить следующую попытку, пока проверка подлинности не будет выполнена успешно.

Каждый метод проверки подлинности можно отключить по отдельности, чтобы избежать ненужных попыток.

Например, при проверке подлинности с помощью EnvironmentCredential отключите другие учетные данные со следующими входными данными:

ExcludeEnvironmentCredential: false ExcludeManagedIdentityCredential: true ExcludeSharedTokenCacheCredential: true ExcludeVisualStudioCredential: true ExcludeVisualStudioCodeCredential: true ExcludeAzureCliCredential: true ExcludeAzurePowershellCredential: true ExcludeInteractiveBrowserCredential: true

Аналогичным образом, если используется например AzureCliCredential , мы хотим пропустить попытку пройти проверку подлинности с помощью нескольких методов, которые приходят перед ним в порядке.

Подписывать файл с помощью SignTool

Чтобы вызвать SignTool для подписывания файла:

  1. Запишите, где находятся средства сборки пакета SDK, извлеченный Azure.CodeSigning.Dlib, и файл metadata.json (из предыдущих разделов).

  2. Замените заполнители в следующем пути определенными значениями, которые были отмечены на шаге 1.

    & "<Path to SDK bin folder>\x64\signtool.exe" sign /v /debug /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /dlib "<Path to Trusted Signing dlib bin folder>\x64\Azure.CodeSigning.Dlib.dll" /dmdf "<Path to metadata file>\metadata.json" <File to sign>
    
  • В пакет SDK для Windows включены как x86, так и x64-разрядные версии SignTool. Обязательно ссылайтесь на соответствующую версию Azure.CodeSigning.Dlib.dll. Предыдущий пример предназначен для версии x64 SignTool.
  • Убедитесь, что вы используете рекомендуемую версию пакета SDK для Windows в зависимости, перечисленные в начале этой статьи, или файл dlib не будет работать.

Сертификаты доверенных подписей имеют трехдневный срок действия, поэтому метка времени имеет решающее значение для продолжения успешной проверки подписи за этот трехдневный срок действия. Доверенный подписывание рекомендует использовать центр метки времени microsoft Public RSA для доверенного подписывания: http://timestamp.acs.microsoft.com/

Использование других интеграции подписывания с доверенным подписыванием

Вы также можете использовать следующие средства или платформы для настройки интеграции подписи с доверенным подписыванием.

  • GitHub Actions: Чтобы узнать, как использовать действие GitHub для доверенного подписывания, см. статью "Доверенный подписывание " Действия в GitHub Marketplace". Выполните инструкции по настройке и использованию действия GitHub.

  • Задача Azure DevOps. Чтобы использовать задачу "Доверенный подписывание Azure DevOps", см. статью "Доверенный вход" в Visual Studio Marketplace. Выполните инструкции по настройке.

  • PowerShell для Authenticode. Использование PowerShell для доверенного подписывания см. в разделе "Доверенный вход" коллекция PowerShell для установки модуля PowerShell.

  • Azure PowerShell — политика CI управления приложениями для бизнеса: чтобы использовать подписывание доверенной подписи для подписи политики целостности кода (CI), следуйте инструкциям в статье "Вход новой политики CI" и см. раздел "Модуль PowerShell Az.CodeSigning".

  • Пакет SDK для доверенного подписывания. Чтобы создать собственную интеграцию подписывания, можно использовать наш пакет SDK доверенного подписывания с открытым исходным кодом.

  • Azure.Developer.TrustedSigning.CryptoProvider: упрощает интеграцию службы с поставщиком шифрования .NET, который абстрагирует интеграцию конечной точки службы от потребителя.