במקרה תרגמתי את המאמר הזה שהוא כתב ג'יימס בומטלי, יועץ טכני של קרן לינוקס, שהתחיל להרכיב מטען טרום אתחול כדי שתוכל לאתחל את לינוקס.
כפי שהסברתי בהודעה הקודמת שלי, יש לנו את הקוד עבור ה- Linux Foundation לפני האתחול. עם זאת, היה א לְעַכֵּב בזמן שהייתה לנו גישה למערכת החתימה של מיקרוסופט.
הדבר הראשון לעשות הוא שלם 99 דולר ל- Verisign (כיום סימנטק) ויש להם מפתח מאומת על ידי Verisign. עשינו זאת למען קרן לינוקס, וכל מה שהם רוצים לעשות זה להתקשר למטה כדי לאמת. המפתח חוזר בכתובת URL המותקנת בדפדפן שלך, אך ניתן להשתמש בכלי SSL SSL סטנדרטיים כדי לחלץ אותו וליצור את אישור ומפתח ה- PEM הרגילים. זה לא קשור לחתימת UEFI אלא משמש לאימות המערכת sysdev מיקרוסופט שאתה מי שאתה אומר שאתה. לפני שתוכל ליצור חשבון sysdev, עליך לבדוק אותו חתימה על הפעלה שהם נותנים לך ומעלים אותו. הם מציבים דרישות קפדניות שתחתום עליו בפלטפורמה ספציפית של Windows, אך sbsign לפחות זה עבד ובינגו חשבוננו נוצר.
לאחר יצירת החשבון, עדיין אינך יכול להעלות קבצים בינאריים של UEFI לחתימה ללא תחילה לחתום על חוזה נייר. העסקאות מכבידות מאוד, כולל הרבה רישיונות שאינם נכללים (כולל כל ה- GPL לנהגים, אך לא עבור טעמי אתחול). החלק המכביד ביותר הוא שנראה שההסכמים מגיעים מעבר לחפצי ה- UEFI עליהם אתה חותם. עורכי הדין של קרן לינוקס הגיעו למסקנה שזה בעיקר לא מזיק ל- LF כי אנחנו לא מוכרים מוצרים, אבל זה יכול להגעיל חברות אחרות. לדברי מתיו גארט, מיקרוסופט מוכנה לנהל משא ומתן על עסקאות מיוחדות עם הפצות כדי להקל על חלק מאותן בעיות.
ברגע שההסכמים נחתמים, האמיתי כיף טכני. אתה לא יכול רק להעלות בינארי של UEFI ולחתום עליו. ראשית אתה צריך עוטפים אותו בקובץ .cab. למרבה המזל, יש פרויקט קוד פתוח שיכול ליצור קבצי ארונות בשם lcab. אז אתה צריך חתום על קובץ ה- cab עם מקש Verisign. שוב, יש פרויקט קוד פתוח נוסף שיכול לעשות זאת: osslsigncode. לכל מי שזקוק לכלים אלה, הם זמינים במאגר ה- UEFI של openSuse Build Service שלי. הבעיה הסופית היא שהעלאת הקובץ דורש אור כסף. לרוע המזל נראה שאור הירח לא עובד ואפילו עם תצוגה מקדימה של גרסה 4, תיבת ההעלאה ריקה, אז הגיע הזמן להשתמש ב- Windows 7 תחת kvm (מכונה וירטואלית מבוססת גרעין). כשאתה מגיע לחלק הזה, אתה צריך גם לאשר שהבינארי "שייחתם, אסור לקבל רישיון תחת GPLv3 או רישיונות קוד פתוח דומים”. אני מניח שזה מחשש לחשיפת מפתח אך זה לא ברור כלל (אותו הדבר עם "רישיונות קוד פתוח דומים").
לאחר השלמת ההעלאה, קובץ הארון נעצר בשבעה שלבים. למרבה הצער, טיפוס המבחן הראשון נשאר נעול בשלב 6 (חתימת הקבצים). לאחר 6 ימים שלחתי דוא"ל תמיכה למיקרוסופט ושאלתי מה קורה. התשובה: "קוד השגיאה שהושלך בתהליך החתימה הוא זה הקובץ שלך אינו יישום Win32 חוקי. האם מדובר ביישום Win32 חוקי? ”. תשובה: ברור שלא, מדובר בבינארי תקף של UEFI של 64 סיביות. לא היו תשובות נוספות...
ניסיתי שוב. הפעם קבלתי אימייל להורדה עבור הקובץ החתום והלוח אומר זאת החתום נכשל. הורדתי אותו ואישרתי. הבינארי עובד על פלטפורמת ה- Secure Boot ונחתם באמצעות המפתח
נושא = / C = US / ST = וושינגטון / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Driver
מנפיק = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011שאלתי את התמיכה מדוע התהליך מצביע על כישלון אך הייתה לי הורדה תקפה, ואחרי שטף של אימיילים, הם השיבו "אל תשתמש בקובץ ההוא שהיה חתום בטעות. אני אחזור אלייך. " אני עדיין לא בטוח מה הבעיה, אבל אם אתה מסתכל על נושא מפתח החתימה, אין שום דבר במפתח שיצביע בפני קרן לינוקסלכן אני חושד שהבעיה היא שהבינארי נחתם באמצעות מפתח Microsoft כללי במקום מפתח ספציפי (וניתן לביטול) הקשור לקרן לינוקס.
עם זאת, זה הסטטוס: אנו נמשיך להמתין עד שמיקרוסופט תיתן לקרן לינוקס טעינת טרום אתחול חתומה ומאומתת. כשזה יקרה, הוא יעלה לאתר לינוקס קרן לשימוש כולם.
מקור: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/
הסיקו את מסקנותיכם, אך זה ייקח זמן.