Θα μεταφράσω αυτό το άρθρο που γράφτηκε από τον James Bottomley , τεχνικό σύμβουλο του Linux Foundation , ο οποίος ξεκίνησε τη δημιουργία ενός pre-bootloader ώστε να μπορεί να εκκινήσει το Linux.
Όπως εξήγησα στην προηγούμενη ανάρτησή μου, έχουμε εγκαταστήσει τον κώδικα για το pre-bootloader του Linux Foundation. Ωστόσο, υπήρξε μια καθυστέρηση όσο αποκτήσαμε πρόσβαση στο σύστημα υπογραφής της Microsoft.
Το πρώτο πράγμα που πρέπει να κάνετε είναι να πληρώσετε το τέλος των 99 δολαρίων στη Verisign (τώρα Symantec) και να λάβετε ένα κλειδί επαληθευμένο από τη Verisign. Το κάναμε αυτό για το Linux Foundation και το μόνο που θέλουν να κάνουν είναι να καλέσουν τα κεντρικά γραφεία για να το επαληθεύσουν. Το κλειδί επιστρέφεται μέσω μιας διεύθυνσης URL που εγκαθίσταται στο πρόγραμμα περιήγησής σας, αλλά μπορούν να χρησιμοποιηθούν τυπικά εργαλεία SSL Linux για την εξαγωγή του και τη δημιουργία ενός κανονικού πιστοποιητικού και κλειδιού PEM. Δεν έχει καμία σχέση με την υπογραφή UEFI, αλλά χρησιμοποιείται για να επικυρώσει στο σύστημα sysdev της Microsoft ότι είστε αυτός που δηλώνετε ότι είστε. Πριν μπορέσετε να δημιουργήσετε έναν λογαριασμό sysdev, πρέπει να τον δοκιμάσετε υπογράφοντας ένα εκτελέσιμο αρχείο που παρέχουν και ανεβάζοντάς το . Έχουν αυστηρές απαιτήσεις να το υπογράψετε σε μια συγκεκριμένη πλατφόρμα Windows, αλλά το sbsign τουλάχιστον λειτούργησε και μπίνγκο, ο λογαριασμός μας δημιουργήθηκε.
Μόλις δημιουργήσετε έναν λογαριασμό, δεν μπορείτε να ανεβάσετε δυαδικά αρχεία UEFI για υπογραφή χωρίς πρώτα να υπογράψετε μια έντυπη σύμβαση . Οι συμφωνίες είναι πολύ επαχθείς, συμπεριλαμβανομένων πολλών εξαιρούμενων αδειών χρήσης (συμπεριλαμβανομένων όλων των GPL για προγράμματα οδήγησης, αλλά όχι για bootloaders). Το πιο επαχθές είναι ότι οι συμφωνίες φαίνεται να εκτείνονται πέρα από τα αντικείμενα UEFI που υπογράφετε . Οι δικηγόροι του Linux Foundation κατέληξαν στο συμπέρασμα ότι είναι ως επί το πλείστον ακίνδυνο για το LF επειδή δεν πουλάμε προϊόντα, αλλά θα μπορούσε να είναι απαράδεκτο για άλλες εταιρείες. Σύμφωνα με τον Matthew Garrett, η Microsoft είναι πρόθυμη να διαπραγματευτεί ειδικές συμφωνίες με διανομές για να μετριάσει ορισμένα από αυτά τα προβλήματα.
Μόλις υπογραφούν οι συμφωνίες, ξεκινά η πραγματική τεχνική διασκέδαση . Δεν μπορείτε απλώς να ανεβάσετε ένα δυαδικό αρχείο UEFI και να περιμένετε να υπογραφεί. Αρχικά, πρέπει να το τυλίξετε σε ένα αρχείο .cab . Ευτυχώς, υπάρχει ένα έργο ανοιχτού κώδικα που μπορεί να δημιουργήσει αρχεία αρχειοθήκης που ονομάζεται lcab. Στη συνέχεια, πρέπει να υπογράψετε το αρχείο .cab με το κλειδί Verisign . Και πάλι, υπάρχει ένα άλλο έργο ανοιχτού κώδικα που μπορεί να το κάνει αυτό: το osslsigncode. Για όποιον χρειάζεται αυτά τα εργαλεία, είναι διαθέσιμα στο αποθετήριο openSUSE UEFI Build Service μου. Το τελευταίο εμπόδιο είναι ότι η μεταφόρτωση του αρχείου απαιτεί Silverlight . Δυστυχώς, το Moonlight δεν φαίνεται να λειτουργεί και, ακόμη και με την προεπισκόπηση της έκδοσης 4, το πλαίσιο μεταφόρτωσης γίνεται κενό, οπότε ήρθε η ώρα να χρησιμοποιήσετε τα Windows 7 σε KVM (εικονική μηχανή που βασίζεται σε πυρήνα). Όταν φτάσετε σε αυτό το μέρος, πρέπει επίσης να πιστοποιήσετε ότι το δυαδικό αρχείο "για να υπογραφεί, δεν πρέπει να διαθέτει άδεια χρήσης GPLv3 ή παρόμοιες άδειες ανοιχτού κώδικα ". Υποθέτω ότι οφείλεται στον φόβο της αποκάλυψης του κλειδιού, αλλά δεν είναι καθόλου σαφές (το ίδιο ισχύει και για τις "παρόμοιες άδειες ανοιχτού κώδικα").
Μόλις ολοκληρωθεί η μεταφόρτωση, το αρχείο αρχειοθήκης περνάει από επτά στάδια. Δυστυχώς, η πρώτη δοκιμαστική μεταφόρτωση κόλλησε στο στάδιο 6 (το στάδιο υπογραφής αρχείου). Μετά από έξι ημέρες, έστειλα email στην υποστήριξη της Microsoft ρωτώντας τι συνέβαινε. Η απάντηση: "Ο κωδικός σφάλματος που επέστρεψε η διαδικασία υπογραφής είναι ότι το αρχείο σας δεν είναι μια έγκυρη εφαρμογή Win32 . Είναι μια έγκυρη εφαρμογή Win32;" Η απάντηση: προφανώς όχι, είναι ένα έγκυρο δυαδικό αρχείο UEFI 64-bit. Δεν υπήρχαν περαιτέρω απαντήσεις ...
Δοκίμασα ξανά. Αυτή τη φορά έλαβα ένα email λήψης για το υπογεγραμμένο αρχείο, αλλά ο πίνακας ελέγχου έλεγε ότι η υπογραφή απέτυχε . Το κατέβασα και το επαλήθευσα. Το δυαδικό αρχείο λειτουργεί στην πλατφόρμα Secure Boot και είναι υπογεγραμμένο με το κλειδί.
θέμα = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
issuer = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011Ρώτησα την υποστήριξη γιατί η διαδικασία έδειχνε σφάλμα, αλλά είχα μια έγκυρη λήψη. Μετά από μια σειρά email, απάντησαν: "Μην χρησιμοποιείτε αυτό το αρχείο. Ήταν λανθασμένα υπογεγραμμένο . Θα επικοινωνήσω μαζί σας." Δεν είμαι ακόμα σίγουρος ποιο είναι το πρόβλημα, αλλά αν κοιτάξετε το Θέμα του κλειδιού υπογραφής, δεν υπάρχει τίποτα στο κλειδί που να υποδεικνύει το Linux Foundation . Επομένως, υποψιάζομαι ότι το πρόβλημα είναι ότι το δυαδικό αρχείο υπογράφεται με ένα γενικό κλειδί της Microsoft αντί για ένα συγκεκριμένο (και ανακλητό) κλειδί που συνδέεται με το Linux Foundation.
Ωστόσο, αυτή είναι η κατάσταση: Θα συνεχίσουμε να περιμένουμε από τη Microsoft να δώσει στο Linux Foundation ένα υπογεγραμμένο και επικυρωμένο προ-bootloader. Όταν συμβεί αυτό, θα μεταφορτωθεί στον ιστότοπο Linux Foundation για χρήση από όλους.
Πηγή: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/
Εξαγάγετε τα συμπεράσματά σας, αλλά αυτό θα πάρει χρόνο.