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


Подписывание пакетов VSIX

Сборки расширений не должны быть подписаны, прежде чем они смогут работать в Visual Studio, но это рекомендуется сделать так.

Добавление цифровой подписи в пакет VSIX защищает расширение и предотвращает изменение. Во время установки установщик VSIX отображает подпись и ссылку на сертификат. Если содержимое VSIX изменяется без обновления подписи, установщик предупреждает пользователя о недопустимой подписи пакета. В этом руководстве предполагается, что вы уже создали VSIX.

Получение сертификата для подписи кода

Допустимые сертификаты можно получить из общедоступного центра сертификации, например:

Полный список доверенных центров сертификации Windows также можно получить из http://aka.ms/trustcertpartners.

Для тестирования можно использовать самовыданные сертификаты. Однако пакеты VSIX, подписанные с помощью самоотдаемых сертификатов, не принимаются Visual Studio Marketplace. Дополнительные сведения о создании самозаверяющих сертификатов с помощью .NET CLI.

Подписывание VSIX с помощью интерфейса командной строки для подписи

VSIXSignTool не рекомендуется использовать в пользу интерфейса командной строки (github.com). Это средство публикуется в NuGet в качестве инструмента dotnet в разделе "Подписи" (nuget.org) и поддерживает локальную подпись или использование облачной подписи Azure Key Vault.

Для локальной подписи sign CLI поддерживает сертификаты и закрытые ключи, хранящиеся в любом сочетании этих расположений:

  • PFX, P7Bили CER файлы
  • Импортированный в диспетчер сертификатов Windows
  • Хранится на USB-устройстве с доступом через поставщика служб шифрования (CSP)

Установка интерфейса командной строки для подписи

  1. Откройте экземпляр PowerShell разработчика.

  2. Убедитесь, что nuget.org добавлена и включена в качестве источника NuGet.

    • Проверка источников с помощью dotnet nuget list source
    • Добавление NuGet.org в качестве источника с помощью dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
  3. Установите знак, выполнив команду dotnet tool install sign --version <version> --global, где <version> доступна последняя доступная версия в разделе "Знак" (nuget.org).

    • --global является необязательным и устанавливает средство в расположении по умолчанию средств .NET, которое автоматически добавляется в переменную среды PATH.

Автономная установка интерфейса командной строки для входа

Для изолированных сред можно скачать последний пакет NuGet для интерфейса командной строки подписи и установить его с помощью:

dotnet tool install --global --add-source <path-to-folder> <tool-name> --version <version>

Например:

dotnet tool install --global --add-source D:\NuGetTools sign --version 99.0

Использование интерфейса командной строки для подписи

После установки в экземпляре sign code <command> <options>PowerShell разработчика можно получить доступ к интерфейсу командной строки для подписи. Сведения о параметрах см . в справочнике по интерфейсу командной строки для пакетов VSIX.

Внимание

Подписывая интерфейс командной строки поддерживает SHA-256SHA-384только алгоритмы отпечатков пальцев, а SHA-512 также допустимые алгоритмы отпечатков пальцев. С помощью PowerShell можно получить отпечатки пальцев с помощью: Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize

  • Подписывание с помощью PFX-файла с отпечатком пальца SHA-256:
sign code certificate-store -cfp 80BB567B...52CB95D4C -cf "D:\Certs\f5ec6169345347a7cd2f83af662970d5d0bfc914.pfx" -d "My VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"

Примечание.

PFX-файлы содержат как сертификат, так и закрытый ключ, используемые для подписывания, и не соответствуют требованиям форума браузера C/A для расширенной проверки (EV) и подписывания, отличного от EV. Рекомендуется использовать только закрытые ключи, хранящиеся на устройстве HSM и доступ к ним с помощью поставщика служб шифрования (CSP).

  • Подписывание с помощью Microsoft Certificate Manager и отпечатка SHA512 (параметр CSP):
sign code certificate-store -cfp A87A60A6F...894559B98 -csp "Microsoft Software Key Storage Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • Подписывание с помощью закрытого ключа в USB-накопителе (параметр CSP):
sign code certificate-store -cfp B113E82D...F5CF294BE0B -csp "eToken Base Cryptographic Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • Подписывание с помощью USB-диска с помощью определенного контейнера ключей (параметры CSP и -k):
sign code certificate-store -cfp 15BB56B0...1ACB959D0 -csp "eToken Base Cryptographic Provider" -k "NuGet Signing.629c9149345347cd2f83af6f5ec70d5d0a7bf616" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"