NuGet paketini imzalama

İmzalı bir paket, içerik bütünlüğü doğrulama denetimlerine olanak tanır ve bu da içerik üzerinde oynanmaya karşı koruma sağlar. Paket imzası aynı zamanda paketin gerçek kökeni hakkında tek bir gerçek kaynağı olarak da hizmet eder ve tüketici için paketin orijinalliğini güçlendirmektedir. Bu kılavuzda zaten bir paket oluşturduğunuz varsayı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 'den http://aka.ms/trustcertpartnersalınabilir.

Test amacıyla kendi kendine verilen sertifikaları kullanabilirsiniz. Ancak, otomatik olarak verilen sertifikalar kullanılarak imzalanan paketler NuGet.org tarafından kabul edilmemektedir. Test sertifikası oluşturma hakkında daha fazla bilgi edinin

Sertifika dosyasını dışarı aktarma

  • Sertifika Dışarı Aktarma Sihirbazı'nı kullanarak mevcut bir sertifikayı ikili DER biçiminde dışarı aktarabilirsiniz.

    Sertifika Dışarı Aktarma Sihirbazı

  • Sertifikayı Dışarı Aktar-Sertifika PowerShell komutunu kullanarak da dışarı aktarabilirsiniz.

Paketi imzalama

Paketi dotnet nuget sign (.NET 6.0.100 SDK veya üzerini gerektirir) kullanarak imzalayın .

dotnet nuget sign MyPackage.nupkg --certificate-path <PathToTheCertificate> --timestamper <TimestampServiceURL>

veya

Nuget işaretini kullanarak paketi imzalayın (nuget.exe 4.6.0 veya üzerini gerektirir):

nuget sign MyPackage.nupkg -CertificatePath <PathToTheCertificate> -Timestamper <TimestampServiceURL>

İpucu

Sertifika sağlayıcısı genellikle yukarıda gösterilen isteğe bağlı bağımsız değişken için Timestamper kullanabileceğiniz bir zaman damgası sunucusu URL'si de sağlar. Sağlayıcınızın belgelerine ve/veya bu hizmet URL'si desteğine başvurun.

  • Sertifika deposunda bulunan bir sertifikayı kullanabilir veya bir dosyadan sertifika kullanabilirsiniz. Bkz. nuget işareti için CLI başvurusu.
  • İmzalanan paketler, imza sertifikasının süresi dolduğunda imzanın geçerli kaldığından emin olmak için bir zaman damgası içermelidir. Aksi takdirde, imzalama işlemi bir uyarı üretir.
  • Nuget verify kullanarak belirli bir paketin imza ayrıntılarını görebilirsiniz.

Sertifikayı NuGet.org

İmzalı bir paketi yayımlamak için önce sertifikayı NuGet.org kaydetmeniz gerekir. Sertifikayı ikili DER biçiminde bir .cer dosya olarak kullanmanız gerekir.

  1. NuGet.org oturum açın.
  2. adresine Account settings gidin (veya Manage Organization > Edit Organization sertifikayı bir Kuruluş hesabına kaydetmek istiyorsanız).
  3. Certificates bölümünü genişletin ve öğesini seçinRegister new.
  4. Daha önce dışarı aktarılmış olan sertifika dosyasına göz atın ve dosyayı seçin. Kayıtlı Sertifikalar

Not

  • Bir kullanıcı birden çok sertifika gönderebilir ve aynı sertifika birden çok kullanıcı tarafından kaydedilebilir.
  • Kullanıcının bir sertifikası kaydedildikten sonra, gelecekteki tüm paket gönderimlerinin sertifikalardan biriyle imzalanması gerekir . Bkz. NuGet.org'da paketiniz için imzalama gereksinimlerini yönetme
  • Kullanıcılar ayrıca kayıtlı bir sertifikayı hesaptan kaldırabilir. Bir sertifika kaldırıldıktan sonra, bu sertifikayla imzalanan yeni paketler gönderim sırasında başarısız olur. Mevcut paketler etkilenmez.

Paketi yayımlama

Artık paketi NuGet.org yayımlamaya hazırsınız. Bkz. Paketleri yayımlama.

Test sertifikası oluşturma

Test amacıyla kendi kendine verilen sertifikaları kullanabilirsiniz. Kendi kendine verilen bir sertifika oluşturmak için New-SelfSignedCertificate PowerShell komutunu kullanın.

New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" `
                          -FriendlyName "NuGetTestDeveloper" `
                          -Type CodeSigning `
                          -KeyUsage DigitalSignature `
                          -KeyLength 2048 `
                          -KeyAlgorithm RSA `
                          -HashAlgorithm SHA256 `
                          -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
                          -CertStoreLocation "Cert:\CurrentUser\My" 

Bu komut, geçerli kullanıcının kişisel sertifika deposunda kullanılabilen bir test sertifikası oluşturur. Yeni oluşturulan sertifikayı görmek için komutunu çalıştırarak certmgr.msc sertifika depoyu açabilirsiniz.

Uyarı

NuGet.org, kendi kendine verilen sertifikalarla imzalanan paketleri kabul etmez.

NuGet.org'de paketinizin imzalama gereksinimlerini yönetme

  1. NuGet.org oturum açın.

  2. Şuraya gidin: Manage PackagesPaket imzalayanları yapılandırma

  • Bir paketin tek sahibiyseniz, gerekli imzalayan sizsinizdir, yani, kayıtlı sertifikalardan herhangi birini kullanarak paketlerinizi imzalayabilir ve NuGet.org yayımlayabilirsiniz.

  • Bir paketin birden çok sahibi varsa, paketi imzalamak için varsayılan olarak "Herhangi bir" sahibin sertifikaları kullanılabilir. Paketin ortak sahibi olarak, gerekli imzayı alan kişi olmak için kendinizle veya başka bir ortak sahiple "Herhangi" seçeneğini geçersiz kılabilirsiniz. Herhangi bir sertifikası kayıtlı olmayan bir sahip yaparsanız, imzalanmamış paketlere izin verilir.

  • Benzer şekilde, bir sahibin sertifikasının kayıtlı olduğu ve başka bir sahibin kayıtlı sertifikasının olmadığı bir paket için varsayılan "Any" seçeneği belirlenirse, NuGet.org sahiplerinden biri tarafından kaydedilen imzalı bir paketi veya imzasız bir paketi kabul eder (sahiplerden birinin kayıtlı sertifikası olmadığından).