Aracılığıyla paylaş


Güçlü adlandırılmış derlemeler oluşturma ve kullanma

Güçlü ad, derlemenin kimliğinden (basit metin adı, sürüm numarası ve kültür bilgileri (sağlanırsa)) artı bir ortak anahtar ve dijital imzadan oluşur. İlgili özel anahtar kullanılarak bir montaj dosyasından üretilir. (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.

Güçlü adlandırılmış bir derleme yalnızca diğer güçlü adlandırılmış derlemelerdeki türleri kullanabilir. Aksi takdirde, güçlü adlandırılmış derlemenin bütünlüğü tehlikeye girer.

Uyarı

.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 .

Güçlü ad senaryosu

Aşağıdaki senaryoda, bir derlemeyi güçlü bir adla imzalama ve ardından bu adı referans alma süreci özetlenmiştir.

  1. Derleme A, aşağıdaki yöntemlerden biri kullanılarak güçlü bir adla oluşturulur:

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

    • Strong Name aracı (Sn.exe) kullanılarak bir şifreleme anahtar çifti oluşturmak ve ardından bu anahtar çiftini bir komut satırı derleyicisi veya Assembly Linker (Al.exe) kullanarak derlemeye atamak. Windows SDK hem Sn.exe hem de Al.exesağlar.

  2. Geliştirme ortamı veya aracı, bütünleştirmenin bildirimini içeren dosyanın karma değerini geliştiricinin özel anahtarıyla imzalar. Bu dijital imza, Assembly A'nın tanım dosyasını içeren taşınabilir yürütülebilir dosyada (PE) depolanır.

  3. Derleme B, Derleme A'nın bir tüketicisidir. Derleme B manifestosunun 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 güçlü ad imzasını doğrular. Ortak dil çalışma zamanı, çalışma zamanında tanımlayıcı ada göre bağlanırken, Derleme B'nin bildiriminde depolanan anahtarı Derleme A 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.

Uyarı

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 imzalanmasını gerektirmediğini unutmayın. Güçlü adlar yalnızca benzersiz bir kimlik sağlar.

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

.NET Framework 3.5 Service Pack 1'den itibaren, MyComputer bölgesi için varsayılan uygulama etki alanı gibi bir tam güven uygulama etki alanına bir derleme yüklendiğinde güçlü 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 StrongNameIdentityPermission talepleri her zaman başarılı olur. 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: Güçlü adı atlama özelliğini devre dışı bırakma.

Başlık Description
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 Güçlü adlandırılmış bir 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 güçlü adlandırılmış bir derlemedeki türlere veya kaynaklara nasıl referans verileceğini 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 güçlü bir isimle nasıl imzalanacağını açıklar.
Sn.exe (Güçlü Ad Aracı) .NET Framework'te yer alan ve tanımlayıcı adlara sahip derlemeler oluşturmaya yardımcı olan aracı açıklar. Bu araç anahtar yönetimi, imza oluşturma ve imza doğrulama seçenekleri 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.