VSIX Paketlerini İmzalama

Uzantı derlemelerinin Visual Studio'da çalıştırılabilmesi için önce imzalanması gerekmez, ancak bunu yapmak iyi bir uygulamadır.

VSIX paketine dijital imza eklemek, uzantınızın güvenliğini sağlar ve kurcalamayı önler. Yükleme sırasında VSIX yükleyicisi imzayı ve sertifikanın bağlantısını görüntüler. VSIX'in içeriği imza güncelleştirilmeden değiştirilirse, yükleyici kullanıcıyı yalnızca geçersiz bir paket imzası konusunda uyarır. Bu kılavuzda, zaten bir VSIX oluşturmuş olduğunuzvarsayılır.

Kod imzalama sertifikası alma

Geçerli sertifikalar aşağıdakiler gibi bir genel sertifika yetkilisinden alınabilir:

Windows tarafından güvenilen sertifika yetkililerinin tam listesi de http://aka.ms/trustcertpartners'den alınabilir.

Test amacıyla kendi kendine verilen sertifikaları kullanabilirsiniz. Ancak, kendi kendine verilen sertifikalar kullanılarak imzalanan VSIX paketleri Visual Studio Market tarafından kabul edilmemektedir. .NET CLI ile otomatik olarak imzalanan sertifikalar oluşturmahakkında daha fazla bilgi edinin.

Bir VSIX'i Sign CLI ile imzalama

VSIXSignTool, Sign CLI (github.com)tercih edildiği için kullanım dışı bırakıldı. Bu araç, İmzala (nuget.org) altında bir dotnet aracı olarak NuGet'e yayımlanır ve yerel imzalamayı veya Azure Key Vault bulut imzalamayı destekler.

Yerel imzalama için Sign CLI, şu konumların herhangi bir bileşiminde depolanan sertifikaları ve özel anahtarları destekler:

  • PFX, P7Bveya CER dosyalarını
  • Windows Sertifika Yöneticisi'ne aktarıldı
  • Şifreleme Hizmeti Sağlayıcısı (CSP) aracılığıyla erişime sahip bir USB cihazında depolanır

Sign CLI'yi yükleme

  1. Bir Geliştirici PowerShell örneği açın.

  2. NuGet kaynağı olarak nuget.org eklendiğini ve etkinleştirildiğini doğrulayın.

    • dotnet nuget list source kullanarak kaynaklarınızı denetleme
    • dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json kullanarak kaynak olarak NuGet.org ekleme
  3. dotnet tool install sign --version <version> --globalçalıştırarak Sign'ı yükleyin; burada <version>Sign (nuget.org)altında kullanılabilir en son sürümdür.

    • --global isteğe bağlıdır ve aracı PATH ortam değişkenine otomatik olarak eklenen .NET araçları varsayılan konumuna yükler.

İmza CLI'sinin Çevrimdışı Yüklemesi

Yalıtılmış ortamlar için en son Sign CLI NuGet paketini indirebilir ve şu komutu kullanarak yükleyebilirsiniz:

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

Mesela:

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

İmza CLI'sını kullanma

Yüklendikten sonra, sign CLI'ya sign code <command> <options>kullanılarak bir Geliştirici PowerShell örneğinde erişilebilir. Seçeneklerin ayrıntılı dökümü için bkz. VSIX Paketleri için CLI Referansı. komut satırından sign code -hyazarak yardım alabilirsiniz.

Önemli

Sign CLI yalnızca geçerli parmak izi algoritmaları olarak SHA-256, SHA-384ve SHA-512 destekler. PowerShell'i kullanarak parmak izi alabilirsiniz: Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize

  • SHA-256 parmak iziyle PFX dosyası kullanarak imzalama:
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"

Not

PFX dosyaları hem sertifika hem de imzalama için kullanılan özel anahtar içerir ve Genişletilmiş Doğrulama (EV) ve EV dışı imzalama için C/A Tarayıcı Forumu gereksinimlerine uymaz. yalnızca Sağlamlaştırılmış Güvenli Modül (HSM) cihazında depolanan özel anahtarların kullanılması ve şifreleme hizmeti sağlayıcısı (CSP) kullanarak bunlara erişmeniz önerilir.

  • Microsoft Sertifika Yöneticisi ve SHA512 parmak izi kullanarak imzalama (-csp seçenek):
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 sürücüsünde özel anahtar kullanarak imzalama (-csp seçenek):
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"
  • Belirli bir anahtar kapsayıcısı (-csp ve -k seçenekleri) kullanarak bir USB sürücüsü ile imzalama:
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"