Подписывание пакетов 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)
Установка интерфейса командной строки для подписи
Откройте экземпляр PowerShell разработчика.
Убедитесь, что nuget.org добавлена и включена в качестве источника NuGet.
- Проверка источников с помощью
dotnet nuget list source
- Добавление NuGet.org в качестве источника с помощью
dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
- Проверка источников с помощью
Установите знак, выполнив команду
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-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"