Я збираюся перекласти цю статтю, написану Джеймсом Боттомлі , технічним радником Linux Foundation , який взявся за створення попереднього завантажувача, щоб Linux міг завантажуватися.
Як я вже пояснював у попередньому дописі, у нас є код для попереднього завантажувача Linux Foundation. Однак виникла затримка з отриманням доступу до системи підписів Microsoft.
Перше, що вам потрібно зробити, це сплатити 99 доларів США компанії Verisign (тепер Symantec) та отримати ключ, перевірений Verisign. Ми зробили це для Linux Foundation, і все, що вони хочуть зробити, це зателефонувати до штаб-квартири, щоб перевірити його. Ключ повертається через URL-адресу, яка встановлюється у вашому браузері, але для його вилучення та створення звичайного сертифіката та ключа PEM можна використовувати стандартні інструменти Linux SSL. Це не має нічого спільного з підписом UEFI, але використовується для перевірки в системі sysdev Microsoft , що ви є тим, за кого себе видаєте. Перш ніж ви зможете створити обліковий запис sysdev, вам потрібно протестувати його , підписавши наданий ними виконуваний файл та завантаживши його . У них є суворі вимоги, щоб ви підписували його на певній платформі Windows, але sbsign принаймні працював, і бінго, наш обліковий запис було створено.
Після створення облікового запису ви все одно не можете завантажувати бінарні файли UEFI для підписання без попереднього підписання паперового договору . Угоди є дуже обтяжливими, включаючи багато виключених ліцензій (включаючи всі GPL для драйверів, але не для завантажувачів). Найбільш обтяжливим є те, що угоди, здається, виходять за рамки об'єктів UEFI, які ви підписуєте . Юристи Linux Foundation дійшли висновку, що це здебільшого нешкідливо для LF, оскільки ми не продаємо продукти, але це може бути неприйнятно для інших компаній. За словами Метью Гарретта, Microsoft готова домовлятися про спеціальні угоди з дистрибутивами, щоб пом'якшити деякі з цих проблем.
Після підписання угод починається справжня технічна забава . Ви не можете просто завантажити бінарний файл UEFI та очікувати, що його буде підписано. Спочатку потрібно обгорнути його у файл .cab . На щастя, існує проект з відкритим кодом, який може створювати CAB-файли під назвою lcab. Потім вам потрібно підписати файл .cab ключем Verisign . Знову ж таки, є ще один проект з відкритим кодом, який може це зробити: osslsigncode. Для тих, кому потрібні ці інструменти, вони доступні в моєму репозиторії openSUSE UEFI Build Service. Остання перешкода полягає в тому, що для завантаження файлу потрібен Silverlight . На жаль, Moonlight, здається, не працює, і навіть у попередній версії 4 поле завантаження стає порожнім, тому настав час використовувати Windows 7 під KVM (віртуальна машина на основі ядра). Коли ви дійдете до цієї частини, вам також потрібно підтвердити, що бінарний файл «для підписання не повинен бути ліцензований за ліцензією GPLv3 або подібними ліцензіями з відкритим кодом ». Я припускаю, що це пов'язано зі страхом розкриття ключа, але це зовсім незрозуміло (те саме стосується «подібних ліцензій з відкритим кодом»).
Після завершення завантаження CAB-файл проходить сім етапів. На жаль, перше тестове завантаження зависло на етапі 6 (етапі підписання файлу). Через шість днів я надіслав електронного листа до служби підтримки Microsoft із запитанням, що відбувається. Відповідь: «Код помилки, який повертає процес підписання, показує, що ваш файл не є дійсною програмою Win32 . Чи є це дійсною програмою Win32?» Відповідь: очевидно, що ні, це дійсний 64-розрядний бінарний файл UEFI. Подальших відповідей не було …
Я спробував ще раз. Цього разу я отримав електронного листа з проханням завантажити підписаний файл, але панель керування повідомила, що підписання не вдалося . Я завантажив і перевірив його. Бінарний файл працює на платформі Secure Boot і підписаний ключем.
subject = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
емітент = / C = США / ST = Вашингтон / L = Редмонд / O = корпорація Microsoft / CN = корпорація Microsoft UEFI CA 2011Я запитав у служби підтримки, чому процес видає помилку, але в мене було дійсне завантаження. Після шквалу електронних листів вони відповіли: «Не використовуйте цей файл; він був неправильно підписаний . Я зв’яжуся з вами пізніше». Я досі не впевнений, у чому проблема, але якщо подивитися на тему ключа підпису, у ключі немає нічого, що вказувало б на Linux Foundation . Тому я підозрюю, що проблема полягає в тому, що бінарний файл підписано загальним ключем Microsoft, а не певним (і відкличним) ключем, пов’язаним з Linux Foundation.
Однак такий статус: ми будемо продовжувати чекати, поки Microsoft надасть Linux Foundation підписаний та перевірений попередній завантажувач. Коли це станеться, його буде завантажено на сайт Linux Foundation для використання усіма.
Джерело: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/
Зробіть свої висновки, але це займе час.