Я собираюсь перевести статью Джеймса Боттомли , технического консультанта 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 или аналогичными лицензиями с открытым исходным кодом ». Предполагаю, это связано со страхом раскрытия ключа, но это совершенно неясно (то же самое относится и к "аналогичным лицензиям с открытым исходным кодом").
После завершения загрузки файл архива проходит семь этапов. К сожалению, первая тестовая загрузка зависла на 6-м этапе (этап подписания файла). Через шесть дней я написал в службу поддержки Microsoft, спрашивая, что происходит. Ответ: «Код ошибки, возвращаемый процессом подписания, указывает на то, что ваш файл не является допустимым приложением Win32 . Является ли это допустимым приложением Win32?» Ответ: очевидно, нет, это допустимый 64-битный UEFI-бинарный файл. Дальнейших ответов не последовало …
Я попробовал ещё раз. На этот раз я получил электронное письмо со ссылкой на скачивание подписанного файла, но на панели управления отобразилось сообщение о неудачной подписи . Я скачал и проверил его. Бинарный файл работает на платформе Secure Boot и подписан ключом.
subject = / C = US / ST = Вашингтон / L = Редмонд / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
эмитент = / C = US / ST = Вашингтон / L = Редмонд / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011Я спросил службу поддержки, почему процесс выдает ошибку, хотя у меня был корректный файл для скачивания. После серии электронных писем они ответили: «Не используйте этот файл; он был неправильно подписан . Я свяжусь с вами позже». Я до сих пор не уверен, в чем проблема, но если посмотреть на тему ключа подписи, там нет ничего, что указывало бы на Linux Foundation . Поэтому я подозреваю, что проблема в том, что бинарный файл подписан общим ключом Microsoft, а не конкретным (и отзываемым) ключом, связанным с Linux Foundation.
Тем не менее, это статус: мы продолжим ждать, пока Microsoft предоставит Linux Foundation подписанный и проверенный предзагрузчик. Когда это произойдет, он будет загружен на сайт Linux Foundation для всеобщего пользования.
Источник: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/
Делайте выводы, но на это потребуется время.