Udostępnij za pośrednictwem


Podpisywanie pakietów VSIX

Zestawy rozszerzeń nie muszą być podpisane, zanim będą mogły działać w programie Visual Studio, ale dobrym rozwiązaniem jest wykonanie tej czynności.

Dodanie podpisu cyfrowego do pakietu VSIX zabezpiecza rozszerzenie i uniemożliwia manipulowanie. Podczas instalacji instalator VSIX wyświetla podpis i link do certyfikatu. Jeśli zawartość pliku VSIX jest modyfikowana bez aktualizowania podpisu, instalator ostrzega tylko użytkownika o nieprawidłowym podpisie pakietu. W tym przewodniku założono, że już utworzono VSIX.

Uzyskiwanie certyfikatu podpisywania kodu

Prawidłowe certyfikaty można uzyskać z publicznego urzędu certyfikacji, takiego jak:

Pełną listę urzędów certyfikacji zaufanych przez system Windows można również uzyskać z http://aka.ms/trustcertpartners.

Do celów testowych można używać certyfikatów wystawionych samodzielnie. Jednak pakiety VSIX podpisane przy użyciu certyfikatów wystawionych samodzielnie nie są akceptowane przez witrynę Visual Studio Marketplace. Dowiedz się więcej o generowaniu certyfikatów z podpisem własnym przy użyciu interfejsu wiersza polecenia platformy .NET.

Podpisywanie pliku VSIX przy użyciu Sign CLI

Narzędzie VSIXSignTool jest przestarzałe na rzecz interfejsu wiersza polecenia podpisywania (github.com). To narzędzie jest publikowane w NuGet jako narzędzie .NET pod Sign (nuget.org) i obsługuje podpisywanie lokalne lub podpisywanie w chmurze za pomocą usługi Azure Key Vault.

W przypadku podpisywania lokalnego Sign CLI obsługuje certyfikaty i klucze prywatne przechowywane w dowolnej kombinacji tych lokalizacji:

  • pliki PFX, P7Blub CER
  • Zaimportowane do Menedżera certyfikatów systemu Windows
  • Przechowywane na urządzeniu USB, z dostępem za pośrednictwem dostawcy usług kryptograficznych (CSP)

Instalacja Sign CLI

  1. Otwórz wystąpienie programu PowerShell dla deweloperów.

  2. Sprawdź, czy nuget.org jest dodawany i włączony jako źródło NuGet.

    • Sprawdzanie źródeł przy użyciu dotnet nuget list source
    • Dodawanie NuGet.org jako źródła przy użyciu dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
  3. Zainstaluj Sign, uruchamiając dotnet tool install sign --version <version> --global, gdzie <version> jest najnowszą dostępną wersją w ramach Sign (nuget.org).

    • --global jest opcjonalny i instaluje narzędzie w domyślnej lokalizacji narzędzi platformy .NET, która jest automatycznie dodawana do zmiennej środowiskowej PATH.

Instalacja narzędzia wiersza poleceń do podpisywania w trybie offline

W przypadku środowisk izolowanych możesz pobrać najnowszy pakiet NuGet dla Sign CLI i zainstalować go przy użyciu:

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

Na przykład:

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

Korzystanie z Sign CLI

Po zainstalowaniu, do Sign CLI można uzyskać dostęp w sesji Developer PowerShell przy użyciu sign code <command> <options>. Aby uzyskać podział opcji, zobacz Dokumentacja interfejsu wiersza polecenia podpisywania dla pakietów VSIX. Możesz uzyskać pomoc z wiersza polecenia, wpisując sign code -h.

Ważny

CLI obsługuje tylko SHA-256, SHA-384i SHA-512 jako prawidłowe algorytmy odcisków palców. Za pomocą programu PowerShell możesz pobrać odciski palców przy użyciu: Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize

  • Podpisywanie przy użyciu pliku PFX przy użyciu odcisku palca 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"

Notatka

Pliki PFX zawierają zarówno certyfikat, jak i klucz prywatny używany do podpisywania i nie są zgodne z wymaganiami forum przeglądarki C/A na potrzeby rozszerzonej weryfikacji (EV) i podpisywania innych niż EV. Zaleca się używanie tylko kluczy prywatnych przechowywanych na urządzeniu HSM (Hardened Secure Module) i uzyskiwanie do nich dostępu przy użyciu dostawcy usług kryptograficznych (CSP).

  • Podpisywanie przy użyciu Menedżera certyfikatów firmy Microsoft i odcisk palca SHA512 (opcja-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"
  • Podpisywanie przy użyciu klucza prywatnego na dysku USB (opcja-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"
  • Podpisywanie przy użyciu dysku USB przy użyciu określonego kontenera kluczy (opcje-csp i -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"