Derlemeyi gecikmeli imzalama

Bir kuruluş, geliştiricilerin günlük olarak erişemeyecekleri, yakından korunan bir anahtar çifti içerebilir. Ortak anahtar genellikle kullanılabilir, ancak özel anahtara erişim yalnızca birkaç kişi ile sınırlıdır. Tanımlayıcı adlara sahip derlemeler geliştirirken, tanımlayıcı adlı hedef derlemeye başvuran her derleme, hedef derlemeye tanımlayıcı bir ad vermek için kullanılan ortak anahtarın belirtecini içerir. Bu, geliştirme işlemi sırasında ortak anahtarın kullanılabilir olmasını gerektirir.

Derleme zamanında gecikmeli veya kısmi imzalama kullanarak taşınabilir yürütülebilir dosyada (PE) tanımlayıcı ad imzası için yer ayırabilir, ancak gerçek imzalamayı genellikle derlemeyi göndermeden hemen önce sonraki bir aşamaya kadar erteleyebilirsiniz.

Derlemeyi gecikmeli imzalamak için:

  1. Kuruluştan anahtar çiftinin ortak anahtar kısmını, nihai imzalamayı yapacak olan kısmını alın. Bu anahtar genellikle Windows SDK tarafından sağlanan Tanımlayıcı Ad aracı (Sn.exe) kullanılarak oluşturulabilen bir .snk dosyası biçimindedir.

  2. derlemenin kaynak koduna öğesinden System.Reflectioniki özel öznitelik ekleyin:

    Örneğin:

    [assembly:AssemblyKeyFileAttribute("myKey.snk")];
    [assembly:AssemblyDelaySignAttribute(true)];
    
    [assembly:AssemblyKeyFileAttribute("myKey.snk")]
    [assembly:AssemblyDelaySignAttribute(true)]
    
    <Assembly:AssemblyKeyFileAttribute("myKey.snk")>
    <Assembly:AssemblyDelaySignAttribute(True)>
    
  3. Derleyici ortak anahtarı derleme bildirimine ekler ve PE dosyasında tam tanımlayıcı ad imzası için yer ayırır. Bu derlemeye başvuran diğer derlemelerin kendi derleme başvurusunda depolanacak anahtarı alabilmesi için, derleme oluşturulurken gerçek ortak anahtar depolanmalıdır.

  4. Derlemenin geçerli bir tanımlayıcı ad imzası olmadığından, bu imzanın doğrulanması kapatılmalıdır. Bunu, Tanımlayıcı Ad aracıyla -Vr seçeneğini kullanarak yapabilirsiniz.

    Aşağıdaki örnek, myAssembly.dll adlı bir derleme için doğrulamayı kapatır.

    sn -Vr myAssembly.dll
    

    Gelişmiş RISC Makinesi (ARM) mikro işlemcileri gibi Tanımlayıcı Ad aracını çalıştıramamanıza neden olan platformlarda doğrulamayı kapatmak için -Vk seçeneğini kullanarak bir kayıt defteri dosyası oluşturun. Kayıt defteri dosyasını, doğrulamayı kapatmak istediğiniz bilgisayardaki kayıt defterine aktarın. Aşağıdaki örnek için myAssembly.dllbir kayıt defteri dosyası oluşturur.

    sn -Vk myRegFile.reg myAssembly.dll
    

    -Vr veya -Vk seçeneğiyle, isteğe bağlı olarak test anahtarı imzalama için bir .snk dosyası ekleyebilirsiniz.

    Uyarı

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

    Not

    64 bit bir bilgisayarda Visual Studio ile geliştirme sırasında gecikmeli imzalama kullanıyorsanız ve Any CPU için bir derleme derlerseniz - Vr seçeneğini iki kez uygulamanız gerekebilir. (Visual Studio'da, Herhangi bir CPU, Platform Hedefi derleme özelliğinin değeridir; komut satırından derleme yaptığınızda varsayılan değerdir.) Uygulamanızı komut satırından veya Dosya Gezgini çalıştırmak için Sn.exe 64 bit sürümünü (Tanımlayıcı Ad aracı) kullanarak -Vr seçeneğini derlemeye uygulayın. Derlemeyi tasarım zamanında Visual Studio'ya yüklemek için (örneğin, derleme uygulamanızdaki diğer derlemeler tarafından kullanılan bileşenler içeriyorsa), tanımlayıcı ad aracının 32 bit sürümünü kullanın. Bunun nedeni, derleme komut satırından çalıştırıldığında tam zamanında (JIT) derleyicinin derlemeyi 64 bit yerel koda ve derleme tasarım zamanı ortamına yüklendiğinde 32 bit yerel koda derlemesidir.

  5. Daha sonra, genellikle göndermeden hemen önce, Tanımlayıcı Ad aracıyla -R seçeneğini kullanarak gerçek tanımlayıcı ad imzalama için derlemeyi kuruluşunuzun imzalama yetkilisine gönderirsiniz.

    Aşağıdaki örnek, sgKey.snk anahtar çiftini kullanarak myAssembly.dll adlı bir derlemeyi tanımlayıcı adla imzalar.

    sn -R myAssembly.dll sgKey.snk
    

Ayrıca bkz.