NuGet imzalı paket doğrulaması

Paket tüketicilerinin paketin orijinalliğini ve bütünlüğünü doğrulamasını sağlamak için bir NuGet paketi imzalayabilirsiniz. Doğrulama etkinleştirilirse, .NET paket geri yükleme işlemi sırasında imzalı paketleri doğrular. Bu işlem, bir paket tüketicisi projesini derlediğinde veya çalıştırdığında otomatik olarak gerçekleşir.

NuGet paket imzaları X.509 sertifikalarını temel alır ve imzalı paket doğrulaması için önkoşul, hem kod imzalama hem de zaman damgası için geçerli olan bir sertifika kök deposudur.

.NET 6.0.400 SDK'sı ile başlayan NuGet, uygun bir sistem kök deposunun kullanılamadığı imzalı paketleri doğrulamak için .NET SDK'sına dahil edilen sertifika paketlerini kullanır. Bu paketler Microsoft Güvenilen Kök Programı'ndan alınır ve Windows'un kök deposuyla aynı kod imzalama ve zaman damgası sertifikalarını içerir. Bu sertifika paketleri, NuGet.org paketlerini doğrulamak için gereken tüm kök sertifikaları içermelidir.

ve verifygibi sign bazı NuGet komutları her zaman imzalı paket doğrulaması gerçekleştirir.

Her işletim sistemi için aşağıdaki bölümler şunları açıklar:

  • Geri yükleme işlemleri sırasında örtük doğrulama varsayılan olarak etkinleştirildiğinde.
  • Nasıl etkinleştirilir?
  • Hangi kök depoların kullanıldığı.

Windows

Doğrulama, paket geri yükleme işlemleri sırasında her zaman etkinleştirilir.

NuGet, genel amaçlı kod imzalamayı ve zaman damgasını zaten destekleyen Windows'ta varsayılan kök depoyu kullanır. .NET SDK sertifika paketleri kullanılmaz. Tüm imzalı paket doğrulama işlevleri, Windows'ta kullanıma sunulduğu .NET SDK sürümünde desteklenir.

Linux

Önemli

.NET 5 SDK'larında imzalı paket doğrulama işlevselliği eklenmiş olsa da, .NET 6.0.400 SDK'ya kadar linux üzerinde bu işlev desteklenmez. 6.0.400'den önceki .NET SDK sürümleriyle imzalı paket doğrulamayı kullanmayın.

.NET 8 SDK'sı öncesinde, paket geri yükleme işlemleri sırasında doğrulama varsayılan olarak devre dışı bırakılır. Kabul etmek için ortam değişkenini DOTNET_NUGET_SIGNATURE_VERIFICATION olarak trueayarlayın.

.NET 8 SDK'sı ile başlayarak doğrulama varsayılan olarak etkinleştirilir. Geri çevirmek için ortam değişkenini DOTNET_NUGET_SIGNATURE_VERIFICATION olarak falseayarlayın.

Kod imzalama sertifikası doğrulaması için NuGet önce aşağıdaki konumda bir sertifika paketini yoklar:

/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem

Geçerli bir sertifika paketi bulunursa NuGet bunu kod imzalama için .NET SDK'sının sertifika paketi yerine tercih eder. .NET SDK'sının sertifika paketiyle en az aynı kök sertifika kümesini içeriyorsa NuGet imzalı paket doğrulaması başarılı olmalıdır. NuGet.org üzerinde imzalı paketlerde kullanılanlar gibi kök sertifikaları yoksa, NuGet imzalı paket doğrulaması güvenilmeyen bir durumla (NU3018 veya NU3028 aracılığıyla) başarısız olur. Bu sertifika paketine kök sertifika eklemek başarılı doğrulamayı etkinleştirebilir; ancak bu sertifika paketinin sistem genelinde bir güven deposu olduğunu, .NET SDK sertifika paketlerinin ise uygulama genelinde güven deposu olarak kullanıldığını unutmayın.

Yukarıdaki konumda geçerli bir sertifika paketi bulunmazsa NuGet, kod imzalama için .NET SDK'sının sertifika paketini kullanmaya geri döner.

Zaman damgası sertifika doğrulaması için NuGet, zaman damgası için her zaman .NET SDK'sının sertifika paketini kullanır.

macOS

Doğrulama, paket geri yükleme işlemleri sırasında varsayılan olarak devre dışı bırakılır. Kabul etmek için ortam değişkenini DOTNET_NUGET_SIGNATURE_VERIFICATION olarak trueayarlayın. Ancak doğrulamayı etkinleştirmenizi öneririz. Daha fazla bilgi için bkz . NuGet/Home#11985 ve NuGet/Home#11986.

NuGet yalnızca .NET SDK'sının sertifika paketlerini kullanır.

Önemli

.NET 5 SDK'larında imzalı paket doğrulama işlevi eklense de, işlevsellik şu anda macOS'ta desteklenmiyor. 6.0.400'den önceki .NET SDK sürümleriyle imzalı paket doğrulamayı kullanmayın. Varsayılan olarak devre dışı bırakın.

Ayrıca bkz.