Bagikan melalui


Menunda penandatanganan assembly

Sebuah organisasi dapat memiliki pasangan kunci yang dijaga ketat yang tidak dapat diakses oleh pengembang setiap hari. Kunci umum sering tersedia, tetapi akses ke kunci privat dibatasi hanya untuk beberapa individu. Saat mengembangkan perakitan dengan nama kuat, setiap perakitan yang mereferensikan perakitan target bernama kuat berisi token kunci umum yang digunakan untuk memberi nama kuat kepada perakitan target. Hal ini mengharuskan kunci umum tersedia selama proses pengembangan.

Anda dapat menggunakan penandatanganan tertunda atau sebagian pada waktu pembuatan untuk memesan ruang dalam file portabel yang dapat dieksekusi (PE) untuk tanda tangan nama yang kuat, tetapi tunda penandatanganan yang sebenarnya hingga beberapa tahap selanjutnya, biasanya tepat sebelum pengiriman perakitan.

Untuk menunda penandatanganan perakitan:

  1. Dapatkan bagian kunci umum pasangan kunci dari organisasi yang akan melakukan penandatanganan akhir. Biasanya kunci ini dalam bentuk file .snk, yang dapat dibuat menggunakan alat Strong Name (Sn.exe) yang disediakan oleh SDK Windows.

  2. Beri anotasi pada kode sumber untuk perakitan dengan dua atribut khusus dari System.Reflection:

    • AssemblyKeyFileAttribute, yang meneruskan nama file berisi kunci umum sebagai parameter ke konstruktornya.

    • AssemblyDelaySignAttribute, yang menunjukkan bahwa penundaan penandatanganan sedang digunakan dengan meneruskan true sebagai parameter ke konstruktornya.

    Contohnya:

    [assembly:AssemblyKeyFileAttribute("myKey.snk")];
    [assembly:AssemblyDelaySignAttribute(true)];
    
    [assembly:AssemblyKeyFileAttribute("myKey.snk")]
    [assembly:AssemblyDelaySignAttribute(true)]
    
    <Assembly:AssemblyKeyFileAttribute("myKey.snk")>
    <Assembly:AssemblyDelaySignAttribute(True)>
    
  3. Pengompilasi menyisipkan kunci umum ke dalam manifes perakitan dan mencadangkan ruang dalam file PE untuk tanda tangan nama lengkap yang kuat. Kunci umum yang sebenarnya harus disimpan saat perakitan dibuat sehingga perakitan lain yang mereferensikan perakitan ini dapat memperoleh kunci untuk disimpan dalam referensi perakitan mereka sendiri.

  4. Karena perakitan tidak memiliki tanda tangan nama kuat yang valid, verifikasi tanda tangan tersebut harus dimatikan. Anda dapat melakukan ini dengan menggunakan opsi -Vr dengan alat Nama Kuat.

    Contoh berikut menonaktifkan verifikasi untuk perakitan yang disebut myAssembly.dll.

    sn -Vr myAssembly.dll
    

    Untuk menonaktifkan verifikasi pada platform di mana Anda tidak dapat menjalankan alat Nama Kuat, seperti mikroprossesor Mesin RISC Tingkat Lanjut (ARM), gunakan opsi -Vk untuk membuat file registri. Impor file registri ke dalam registri di komputer tempat Anda ingin menonaktifkan verifikasi. Contoh berikut membuat file registri untuk myAssembly.dll.

    sn -Vk myRegFile.reg myAssembly.dll
    

    Dengan opsi -Vr atau -Vk, Anda dapat secara opsional menyertakan file .snk untuk penandatanganan kunci pengujian.

    Peringatan

    Jangan mengandalkan nama yang kuat untuk keamanan. Nama yang kuat hanya memberikan identitas unik.

    Catatan

    Jika Anda menggunakan penundaan penandatanganan selama pengembangan dengan Visual Studio pada komputer 64-bit, dan Anda mengompilasi perakitan untuk CPU apa pun, Anda mungkin harus menerapkan opsi -Vr dua kali. (Di Visual Studio, CPU apa pun adalah nilai dari properti build Target Platform; ketika Anda mengompilasi dari baris perintah, itu adalah defaultnya.) Untuk menjalankan aplikasi dari baris perintah atau dari File Explorer, gunakan versi 64-bit dari Sn.exe (alat Nama Kuat) untuk menerapkan opsi -Vr ke perakitan. Untuk memuat perakitan ke Visual Studio pada waktu desain (misalnya, jika perakitan berisi komponen yang digunakan oleh perakitan lain dalam aplikasi Anda), gunakan versi 32-bit dari alat nama kuat. Ini karena pengompilasi just-in-time (JIT) mengompilasi perakitan ke kode asli 64-bit saat perakitan dijalankan dari baris perintah, dan ke kode asli 32-bit saat perakitan dimuat ke dalam lingkungan waktu desain.

  5. Kemudian, biasanya tepat sebelum pengiriman, Anda mengirimkan perakitan ke otoritas penandatanganan organisasi Anda untuk penandatanganan nama kuat yang sebenarnya menggunakan opsi -R dengan alat Nama Kuat.

    Contoh berikut menandatangani perakitan yang disebut myAssembly.dll dengan nama yang kuat menggunakan pasangan kunci sgKey.snk.

    sn -R myAssembly.dll sgKey.snk
    

Lihat juga