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.
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.
- NuGet.org oturum açın.
- adresine
Account settings
gidin (veyaManage Organization
>Edit Organization
sertifikayı bir Kuruluş hesabına kaydetmek istiyorsanız). Certificates
bölümünü genişletin ve öğesini seçinRegister new
.- Daha önce dışarı aktarılmış olan sertifika dosyasına göz atın ve dosyayı seçin.
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
NuGet.org oturum açın.
Şuraya gidin:
Manage Packages
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).