Tanımlayıcı adlı derlemeler oluşturma ve kullanma

Tanımlayıcı ad, derlemenin kimliğinden (basit metin adı, sürüm numarası ve kültür bilgileri (sağlanırsa) ve bir ortak anahtar ve dijital imzadan oluşur. Karşılık gelen özel anahtar kullanılarak bir derleme dosyasından oluşturulur. (Derleme dosyası, derlemeyi oluşturan tüm dosyaların adlarını ve karmalarını içeren derleme bildirimini içerir.)

Uyarı

Güvenlik için tanımlayıcı adlara güvenmeyin. Yalnızca benzersiz bir kimlik sağlar.

Tanımlayıcı adlandırılmış bir derleme yalnızca diğer tanımlayıcı adlandırılmış derlemelerdeki türleri kullanabilir. Aksi takdirde, tanımlayıcı adlı derlemenin bütünlüğü tehlikeye girer.

Not

.NET Core, tanımlayıcı adlandırılmış derlemeleri desteklese ve .NET Core kitaplığındaki tüm derlemeler imzalanmış olsa da, üçüncü taraf derlemelerin çoğunluğunun kesin adlara ihtiyacı yoktur. Daha fazla bilgi için bkz . GitHub'da Tanımlayıcı Ad İmzalama .

Tanımlayıcı ad senaryosu

Aşağıdaki senaryoda, bir derlemeyi kesin bir adla imzalama ve daha sonra bu ada başvurma işlemi özetlenmiştir.

  1. Derleme A, aşağıdaki yöntemlerden biri kullanılarak tanımlayıcı bir adla oluşturulur:

    • Visual Studio gibi tanımlayıcı adlar oluşturmayı destekleyen bir geliştirme ortamı kullanma.

    • Tanımlayıcı Ad aracını (Sn.exe) kullanarak şifreleme anahtar çifti oluşturma ve bu anahtar çiftini bir komut satırı derleyicisi veya Derleme Bağlayıcısı (Al.exe) kullanarak derlemeye atama. Windows SDK hem Sn.exe hem de Al.exe sağlar.

  2. Geliştirme ortamı veya aracı, derlemenin bildirimini içeren dosyanın karması geliştiricinin özel anahtarıyla imzalar. Bu dijital imza, Derleme A'nın bildirimini içeren taşınabilir yürütülebilir dosyada (PE) depolanır.

  3. Derleme B, A Derlemesinin bir tüketicisidir. B Derlemesi bildiriminin başvuru bölümü, Derleme A'nın ortak anahtarını temsil eden bir belirteç içerir. Belirteç, tam ortak anahtarın bir bölümüdür ve alandan tasarruf etmek için anahtarın kendisi yerine kullanılır.

  4. Ortak dil çalışma zamanı, derleme genel derleme önbelleğine yerleştirildiğinde tanımlayıcı ad imzasını doğrular. Çalışma zamanında tanımlayıcı ada göre bağlanırken, ortak dil çalışma zamanı Derleme B'nin bildiriminde depolanan anahtarı A Derlemesi için tanımlayıcı adı oluşturmak için kullanılan anahtarla karşılaştırır. .NET güvenlik denetimleri geçerse ve bağlama başarılı olursa, B Derlemesi A Derlemesinin bitleriyle oynanmadığını ve bu bitlerin A Derlemesi geliştiricilerinden geldiğini garanti eder.

Not

Bu senaryo güven sorunlarını gidermez. Derlemeler, tanımlayıcı bir ada ek olarak tam Microsoft Authenticode imzaları taşıyabilir. Authenticode imzaları güven oluşturan bir sertifika içerir. Tanımlayıcı adların kodun bu şekilde oturum açmasını gerektirmediğini unutmayın. Tanımlayıcı adlar yalnızca benzersiz bir kimlik sağlar.

Güvenilir derlemelerin imza doğrulamasını atlama

.NET Framework 3.5 Service Pack 1'den başlayarak, bölge için MyComputer varsayılan uygulama etki alanı gibi bir derleme tam güven uygulama etki alanına yüklendiğinde tanımlayıcı ad imzaları doğrulanmaz. Bu, tanımlayıcı ad atlama özelliği olarak adlandırılır. Tam güven ortamında, imzaları ne olursa olsun imzalı, tam güven derlemeleri için her zaman başarılı olmaları gerekir StrongNameIdentityPermission . Tanımlayıcı ad atlama özelliği, bu durumda tam güven derlemelerinin tanımlayıcı ad imza doğrulamasının gereksiz yükünü ortadan kaldırarak derlemelerin daha hızlı yüklenmesini sağlar.

Atlama özelliği, tanımlayıcı bir adla imzalanan ve aşağıdaki özelliklere sahip tüm derlemeler için geçerlidir:

  • Kanıt olmadan StrongName tamamen güvenilirdir (örneğin, bölge kanıtı vardır MyComputer ).

  • Tam güvenilir AppDomainbir içine yüklendi.

  • bu özelliğinin ApplicationBase altındaki bir konumdan AppDomainyüklendi.

  • Gecikmeli imzalı değil.

Bu özellik tek tek uygulamalar veya bir bilgisayar için devre dışı bırakılabilir. Bkz . Nasıl yapılır: Tanımlayıcı adı atlama özelliğini devre dışı bırakma.

Ünvan Açıklama
Nasıl yapılır: Ortak-özel anahtar çifti oluşturma Bir derlemeyi imzalamak için şifreleme anahtar çifti oluşturmayı açıklar.
Nasıl yapılır: Derlemeyi tanımlayıcı adla imzalama Tanımlayıcı adlandırılmış derlemenin nasıl oluşturulacağını açıklar.
Gelişmiş güçlü adlandırma .NET Framework 4.5'teki tanımlayıcı adlara yönelik iyileştirmeleri açıklar.
Nasıl yapılır: Tanımlayıcı adlandırılmış bir derlemeye başvurma Derleme zamanında veya çalışma zamanında tanımlayıcı adlı bir derlemedeki türlere veya kaynaklara nasıl başvuracaklarını açıklar.
Nasıl yapılır: Tanımlayıcı ad atlama özelliğini devre dışı bırakma Tanımlayıcı ad imzalarının doğrulamasını atlayan özelliğin nasıl devre dışı bırakıldığını açıklar. Bu özellik tüm uygulamalar veya belirli uygulamalar için devre dışı bırakılabilir.
Derlemeler oluşturma Tek dosyalı ve çok dosyalı derlemelere genel bir bakış sağlar.
Visual Studio'da derlemenin imzasını geciktirme Derleme oluşturulduktan sonra bir derlemenin tanımlayıcı adla nasıl imzalandığını açıklar.
Sn.exe (Tanımlayıcı Ad aracı) .NET Framework'te yer alan ve tanımlayıcı adlara sahip derlemeler oluşturmaya yardımcı olan aracı açıklar. Bu araç, temel yönetim, imza oluşturma ve imza doğrulaması için seçenekler sağlar.
Al.exe (Derleme bağlayıcısı) Modüllerden veya kaynak dosyalarından derleme bildirimi içeren bir dosya oluşturan .NET Framework'te bulunan aracı açıklar.