Подписывание пакетов VSIX
Сборки расширений не обязательно подписывать перед запуском в Visual Studio, но это хорошая практика.
Добавление цифровой подписи в пакет VSIX защищает расширение и предотвращает изменение. Во время установки установщик VSIX отображает подпись и ссылку на сертификат. Если содержимое VSIX изменяется без обновления подписи, установщик предупреждает пользователя о недопустимой подписи пакета. В этом руководстве предполагается, что вы уже создали VSIX.
Получение сертификата подписи кода
Допустимые сертификаты можно получить из общедоступного центра сертификации, например:
Полный список доверенных центров сертификации Windows также можно получить из http://aka.ms/trustcertpartners.
Для тестирования можно использовать выпущенные самостоятельно сертификаты. Однако пакеты VSIX, подписанные с помощью самоподписанных сертификатов, не принимаются на Visual Studio Marketplace. Узнайте больше о создании самоподписанных сертификатов с помощью .NET CLI.
Подписывание VSIX с помощью интерфейса командной строки для подписи
Средство VSIXSignTool устарело в пользу Sign CLI (github.com). Это средство публикуется в NuGet как инструмент dotnet в подписи (nuget.org) и поддерживает локальную подпись или подписывание в облаке Azure Key Vault.
Для локальной подписи Sign CLI поддерживает сертификаты и закрытые ключи, хранящиеся в любом сочетании этих мест:
-
PFX
,P7B
или файлыCER
- Импортированный в диспетчер сертификатов Windows
- Данные, хранящиеся на USB-устройстве, доступны через криптографический поставщик услуг (CSP) .
Установка интерфейса командной строки для подписи
Откройте экземпляр разработчика PowerShell.
Убедитесь, что nuget.org добавлена и включена в качестве источника NuGet.
- Проверка источников с помощью
dotnet nuget list source
- Добавьте NuGet.org в качестве источника, используя
dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
- Проверка источников с помощью
Установите пакет Sign, выполнив
dotnet tool install sign --version <version> --global
, где<version>
— последняя доступная версия пакета Sign на сайте nuget.org.-
--global
является необязательным и устанавливает средство в расположении инструментов .NET по умолчанию, которое автоматически добавляется в переменную среды PATH.
-
Офлайн установка Sign CLI
Для изолированных сред можно скачать последнюю версию пакета NuGet для Sign CLI и установить её с помощью:
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 можно вызвать в экземпляре PowerShell для разработчиков с помощью sign code <command> <options>
. Для получения сведений о параметрах см. справочник интерфейса командной строки для пакетов VSIX. Чтобы получить справку через командную строку, введите команду sign code -h
.
Важный
Sign CLI поддерживает только SHA-256
, SHA-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"
Связанное содержимое
- Выпуск расширений Visual Studio
- Справочник по интерфейсу командной строки для пакетов VSIX