Tôi sẽ dịch bài viết này của James Bottomley , cố vấn kỹ thuật của Linux Foundation , người đã bắt tay vào việc xây dựng một pre-bootloader để Linux có thể khởi động.
Như tôi đã giải thích trong bài đăng trước, chúng tôi đã có mã nguồn cho trình khởi động trước của Linux Foundation. Tuy nhiên, đã có sự chậm trễ trong quá trình chúng tôi giành được quyền truy cập vào hệ thống ký số của Microsoft.
Việc đầu tiên bạn cần làm là trả phí 99 đô la cho Verisign (nay là Symantec) và nhận khóa được Verisign xác minh. Chúng tôi đã làm điều này cho Linux Foundation, và tất cả những gì họ muốn là gọi đến trụ sở chính để xác minh. Khóa được trả về thông qua một URL được cài đặt trong trình duyệt của bạn, nhưng các công cụ SSL tiêu chuẩn của Linux có thể được sử dụng để trích xuất nó và tạo chứng chỉ và khóa PEM thông thường. Nó không liên quan gì đến việc ký UEFI, nhưng nó được sử dụng để xác thực với hệ thống sysdev của Microsoft rằng bạn chính là người bạn tự xưng. Trước khi bạn có thể tạo tài khoản sysdev, bạn phải kiểm tra bằng cách ký một tệp thực thi mà họ cung cấp và tải lên . Họ có các yêu cầu nghiêm ngặt rằng bạn phải ký trên một nền tảng Windows cụ thể, nhưng ít nhất sbsign đã hoạt động, và thế là xong, tài khoản của chúng tôi đã được tạo.
Sau khi tạo tài khoản, bạn vẫn không thể tải lên các tệp nhị phân UEFI để ký mà không cần ký hợp đồng bằng văn bản trước . Các thỏa thuận này rất khắt khe, bao gồm nhiều giấy phép bị loại trừ (bao gồm tất cả các giấy phép GPL cho trình điều khiển, nhưng không bao gồm cho bộ nạp khởi động). Phần khắt khe nhất là các thỏa thuận dường như mở rộng ra ngoài phạm vi các đối tượng UEFI mà bạn ký . Các luật sư của Linux Foundation kết luận rằng điều này hầu như không gây hại cho LF vì chúng tôi không bán sản phẩm, nhưng nó có thể không thể chấp nhận được đối với các công ty khác. Theo Matthew Garrett, Microsoft sẵn sàng đàm phán các thỏa thuận đặc biệt với các bản phân phối để giảm thiểu một số vấn đề này.
Sau khi các thỏa thuận được ký kết, phần thú vị về mặt kỹ thuật thực sự mới bắt đầu . Bạn không thể chỉ tải lên một tệp nhị phân UEFI và mong đợi nó được ký. Đầu tiên, bạn phải đóng gói nó vào một tệp .cab . May mắn thay, có một dự án mã nguồn mở có thể tạo ra các tệp cabinet được gọi là lcab. Sau đó, bạn phải ký tệp .cab bằng khóa Verisign . Một lần nữa, có một dự án mã nguồn mở khác có thể làm điều đó: osslsigncode. Đối với bất kỳ ai cần các công cụ này, chúng có sẵn trong kho lưu trữ openSUSE UEFI Build Service của tôi. Trở ngại cuối cùng là việc tải lên tệp yêu cầu Silverlight . Thật không may, Moonlight dường như không hoạt động, và ngay cả với bản xem trước phiên bản 4, hộp tải lên vẫn trống, vì vậy đã đến lúc sử dụng Windows 7 dưới KVM (máy ảo dựa trên nhân). Khi đến phần đó, bạn cũng phải xác nhận rằng tệp nhị phân "cần được ký, không được cấp phép theo GPLv3 hoặc các giấy phép mã nguồn mở tương tự ." Tôi cho rằng đó là do lo sợ khóa mã nguồn bị tiết lộ, nhưng điều này hoàn toàn không rõ ràng (điều tương tự cũng áp dụng cho "các giấy phép mã nguồn mở tương tự").
Sau khi quá trình tải lên hoàn tất, tệp cabinet sẽ trải qua bảy giai đoạn. Thật không may, lần tải lên thử nghiệm đầu tiên bị kẹt ở giai đoạn 6 (giai đoạn ký tệp). Sau sáu ngày, tôi đã gửi email cho bộ phận hỗ trợ của Microsoft để hỏi chuyện gì đang xảy ra. Câu trả lời nhận được: “Mã lỗi do quá trình ký trả về là tệp của bạn không phải là ứng dụng Win32 hợp lệ . Nó có phải là ứng dụng Win32 hợp lệ không?” Câu trả lời: rõ ràng là không, nó là tệp nhị phân UEFI 64-bit hợp lệ. Không có thêm phản hồi nào nữa …
Tôi thử lại. Lần này tôi nhận được email tải xuống tập tin đã ký, nhưng bảng điều khiển báo rằng quá trình ký thất bại . Tôi đã tải xuống và xác minh. Tập tin nhị phân hoạt động trên nền tảng Secure Boot và đã được ký bằng khóa.
topic = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
nhà phát hành = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011Tôi đã hỏi bộ phận hỗ trợ lý do tại sao quá trình lại báo lỗi, trong khi tôi đã tải xuống một tập tin hợp lệ. Sau một loạt email trao đổi, họ trả lời: "Đừng sử dụng tập tin đó; nó đã được ký không đúng cách . Tôi sẽ liên hệ lại với bạn." Tôi vẫn không chắc vấn đề là gì, nhưng nếu bạn xem phần Chủ thể của khóa ký, không có gì trong khóa cho thấy đó là của Linux Foundation . Do đó, tôi nghi ngờ vấn đề là tập tin nhị phân được ký bằng khóa chung của Microsoft thay vì khóa cụ thể (và có thể thu hồi) được liên kết với Linux Foundation.
Tuy nhiên, đây là trạng thái: Chúng tôi sẽ tiếp tục đợi Microsoft cung cấp cho Linux Foundation một bộ nạp khởi động trước đã ký và xác thực. Khi điều đó xảy ra, nó sẽ được tải lên trang Linux Foundation để mọi người sử dụng.
Nguồn: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/
Rút ra kết luận của bạn, nhưng điều này sẽ mất thời gian.