Pengembaraan dalam Tanda Tangan UEFI Microsoft

Saya akan menterjemahkan artikel ini yang ditulis oleh James Bottomley , penasihat teknikal Yayasan Linux , yang mula menyediakan pra-pemuat but supaya Linux boleh boot.

Seperti yang saya jelaskan dalam catatan saya sebelum ini, kita mempunyai kod untuk pra-pemuat but Linux Foundation. Walau bagaimanapun, terdapat kelewatan semasa kita mendapat akses kepada sistem tandatangan Microsoft.

Perkara pertama yang perlu anda lakukan ialah membayar yuran $99 kepada Verisign (kini Symantec) dan dapatkan kunci yang disahkan Verisign. Kami melakukan ini untuk Yayasan Linux, dan apa yang mereka mahu lakukan ialah menghubungi ibu pejabat untuk mengesahkannya. Kunci dikembalikan melalui URL yang dipasang dalam pelayar anda, tetapi alat SSL Linux standard boleh digunakan untuk mengekstraknya dan mencipta sijil dan kunci PEM biasa. Ia tiada kaitan dengan penandatanganan UEFI, tetapi ia digunakan untuk mengesahkan kepada sistem sysdev Microsoft bahawa anda adalah siapa yang anda katakan. Sebelum anda boleh membuat akaun sysdev, anda perlu mengujinya dengan menandatangani fail boleh laku yang mereka sediakan dan memuat naiknya . Mereka mempunyai syarat ketat bahawa anda menandatanganinya pada platform Windows tertentu, tetapi sekurang-kurangnya sbsign berfungsi, dan bingo, akaun kami telah dicipta.

Sebaik sahaja anda membuat akaun, anda masih tidak boleh memuat naik binari UEFI untuk ditandatangani tanpa menandatangani kontrak kertas terlebih dahulu . Perjanjian tersebut sangat membebankan, termasuk banyak lesen yang dikecualikan (termasuk semua GPL untuk pemacu, tetapi bukan untuk pemuat but). Bahagian yang paling membebankan ialah perjanjian tersebut seolah-olah melangkaui objek UEFI yang anda tandatangani . Peguam Yayasan Linux menyimpulkan bahawa ia kebanyakannya tidak berbahaya kepada LF kerana kami tidak menjual produk, tetapi ia mungkin tidak boleh diterima oleh syarikat lain. Menurut Matthew Garrett, Microsoft bersedia untuk merundingkan perjanjian khas dengan pengedaran untuk mengurangkan beberapa masalah ini.

Sebaik sahaja perjanjian ditandatangani, keseronokan teknikal sebenar bermula . Anda tidak boleh memuat naik binari UEFI dan mengharapkan ia ditandatangani. Pertama, anda perlu membungkusnya dalam fail .cab . Nasib baik, terdapat projek sumber terbuka yang boleh mencipta fail kabinet yang dipanggil lcab. Kemudian anda perlu menandatangani fail .cab dengan kekunci Verisign . Sekali lagi, terdapat satu lagi projek sumber terbuka yang boleh melakukannya: osslsigncode. Bagi sesiapa yang memerlukan alatan tersebut, ia tersedia dalam repositori openSUSE UEFI Build Service saya. Halangan terakhir ialah memuat naik fail memerlukan Silverlight . Malangnya, Moonlight nampaknya tidak berfungsi, dan walaupun dengan pratonton versi 4, kotak muat naik menjadi kosong, jadi sudah tiba masanya untuk menggunakan Windows 7 di bawah KVM (mesin maya berasaskan kernel). Apabila anda sampai ke bahagian itu, anda juga perlu mengesahkan bahawa binari "yang hendak ditandatangani, tidak boleh dilesenkan di bawah GPLv3 atau lesen sumber terbuka yang serupa ." Saya menganggap ia disebabkan oleh ketakutan bahawa kunci itu akan didedahkan, tetapi ia langsung tidak jelas (begitu juga untuk "lesen sumber terbuka yang serupa").

Setelah muat naik selesai, fail kabinet akan melalui tujuh peringkat. Malangnya, muat naik ujian pertama tersekat pada peringkat 6 (peringkat penandatanganan fail). Selepas enam hari, saya menghantar e-mel kepada sokongan Microsoft untuk bertanya apa yang sedang berlaku. Jawapannya: “Kod ralat yang dikembalikan oleh proses penandatanganan ialah fail anda bukan aplikasi Win32 yang sah . Adakah ia aplikasi Win32 yang sah?” Jawapannya: sudah tentu tidak, ia adalah binari UEFI 64-bit yang sah. Tiada balasan selanjutnya

Saya cuba lagi. Kali ini saya menerima e-mel muat turun untuk fail yang ditandatangani, tetapi papan pemuka mengatakan bahawa tandatangan gagal . Saya memuat turun dan mengesahkannya. Binari berfungsi pada platform Secure Boot dan ditandatangani dengan kunci tersebut.

subjek = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Penerbit Pemacu Microsoft Windows UEFI
penerbit = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011

Saya bertanya kepada pihak sokongan mengapa proses tersebut menunjukkan ralat, tetapi saya mempunyai muat turun yang sah. Selepas beberapa e-mel yang dihantar, mereka menjawab, "Jangan gunakan fail itu; ia telah ditandatangani secara salah . Saya akan menghubungi anda semula." Saya masih tidak pasti apa masalahnya, tetapi jika anda melihat Subjek kekunci tandatangan, tiada apa-apa dalam kekunci tersebut untuk menunjukkan Yayasan Linux . Oleh itu, saya mengesyaki masalahnya ialah binari ditandatangani dengan kekunci Microsoft generik dan bukannya kekunci khusus (dan boleh dibatalkan) yang dipautkan ke Yayasan Linux.

Walau bagaimanapun, ini adalah statusnya: Kami akan terus menunggu Microsoft memberi Linux Foundation pra-bootloader yang ditandatangani dan disahkan. Apabila itu berlaku, ia akan dimuat naik ke laman Linux Foundation untuk digunakan oleh semua.

Sumber: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/

Buat kesimpulan anda, tetapi ini akan memakan masa.


Tambahkan sebagai sumber pilihan dalam Google