微軟UEFI簽名歷險記

我碰巧翻譯了他寫的這篇文章 詹姆斯·波托姆利,技術顧問 Linux基金會,他們開始放在一起 預引導程序,以便您可以引導Linux.

正如我在上一篇文章中所解釋的,我們已經準備好Linux Foundation預引導程序的代碼。 但是,有一個 延遲 而我們可以訪問Microsoft簽名系統。

首先要做的是 支付99美元給Verisign (現為Symantec)並具有由Verisign驗證的密鑰。 我們是為Linux Foundation做的,他們要做的就是致電總部進行驗證。 密鑰返回瀏覽器中安裝的URL,但是可以使用標準的Linux SSL工具提取它並創建常規的PEM證書和密鑰。 它與UEFI簽名無關,但用於驗證系統 系統開發人員 微軟,你就是你所說的。 在創建sysdev帳戶之前,必須對其進行測試 他們給您簽名的可執行文件並上傳。 他們對您在特定的Windows平台上進行簽名提出了嚴格的要求,但請至少對其進行簽名,然後創建Bingo我們的帳戶。

創建帳戶後,如果沒有先註冊,您仍然無法上傳UEFI二進製文件進行簽名 簽訂紙質合同。 協議非常繁重,包括許多排除的許可證(包括用於驅動程序的所有GPL,但不適用於引導加載程序)。 最麻煩的部分是協議似乎已經達成 超出您簽署的UEFI對象。 Linux基金會的律師得出結論,它對LF基本上無害,因為我們不出售產品,但對其他公司可能會令人噁心。 根據Matthew Garrett的說法,Microsoft願意與發行版進行特殊交易的談判,以緩解其中的一些問題。

協議簽署後, 技術樂趣。 您不能只上傳UEFI二進製文件並對其進行簽名。 首先你必須 將其包裝為.cab文件。 幸運的是,有一個開源項目可以創建名為lcab的內閣文件。 那你必須 使用Verisign密鑰對.cab文件進行簽名。 同樣,還有另一個開源項目可以做到這一點:osslsigncode。 對於需要這些工具的任何人,都可以在我的openSuse Build Service UEFI存儲庫中找到它們。 最後的問題是上傳文件 需要Silverlight。 不幸的是,月光似乎不起作用,即使使用版本4預覽,上傳框也變為空白,因此 是時候使用Windows 7了 在kvm(基於內核的虛擬機)下。 當您進入該部分時,還必須證明二進製文件“將被簽名, 不得根據GPLv3或類似的開源許可證獲得許可”。 我以為是因為擔心密鑰公開,但是根本不清楚(與“類似的開源許可證”相同)。

上傳完成後,內閣文件將停止七個階段。 不幸的是,第一次測試攀爬一直沒有 鎖定在第六階段 (文件簽名)。 6天后,我向Microsoft發送了一封支持電子郵件,詢問發生了什麼事。 答案是:“簽名過程拋出的錯誤代碼是: 您的文件不是有效的Win32應用程序。 它是有效的Win32應用程序嗎?”。 答:顯然不是,它是有效的64位UEFI二進製文件。 沒有更多答案了...

我再次嘗試。 這次,我收到了簽名文件的下載電子郵件,董事會說 簽名失敗。 我下載並驗證。 二進製文件可在secureboot平台上運行,並用密鑰簽名

主題= / C =美國/ ST =華盛頓/ L =雷德蒙德/ O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
發行人= / C =美國/ ST =華盛頓/ L =雷德蒙德/ O =微軟公司/ CN =微軟公司UEFI CA 2011

我詢問支持人員,為什麼該過程指示失敗,但是我進行了有效下載,並且在收到大量電子郵件後,他們回答“請勿使用該文件。 簽名錯誤。 我會回到你身邊。” 我仍然不確定是什麼問題,但是如果您查看簽名密鑰的主題, 密鑰中沒有任何內容可以指示Linux Foundation,因此我懷疑問題在於二進製文件是用通用Microsoft密鑰而不是與Linux Foundation綁定的特定(可撤銷)密鑰簽名的。

但是,狀態是:我們將繼續等待Microsoft向Linux Foundation提供經過簽名並經過驗證的預引導程序。 發生這種情況時,它將被上傳到Linux Foundation站點供所有人使用。

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

得出您的結論,但這將需要時間。


在 Google 中將其新增為首選來源