VirtualBox in openSUSE Leap mit Secure Boot

VirtualBox benötigt für den Betrieb ein zusätzliches Kernelmodul, das je nach Distribution über verschiedene Wege installiert wird und immer wieder für unterschiedlichste Probleme sorgen kann. So auch bei Secure Boot unter openSUSE Leap.

Das Problem ist relativ einfach und besteht bereits seit Leap 15.3 und wird auch bei Leap 15.4 weiter bestehen, weil eine wirkliche Lösung aussteht. Secure Boot basiert auf einer Signatur bzw. Vertrauenskette, um einen verifizierten Start einzuleiten. Im Gegensatz zu anderen halte ich das für eine grundsätzlich gute Sache, die nur besser unterstützt werden muss und die man nicht pauschal abschalten sollte. Meine Geräte laufen daher fast ausnahmslos mit aktiviertem Secure Boot. In openSUSE Leap gibt es nun das Problem mit zwei unterschiedlichen Signaturen und nur eine davon wird standardmäßig ausgeliefert.

Dazu muss man sich vergegenwärtigen, wie openSUSE Leap seit 15.3 entsteht. Auf der recht schmalen Basis aus SUSE Linux Enterprise-Paketen baut die Community weitere Pakete auf und erschafft eine Community-LTS-Distribution mit mehr Desktops, mehr Programmen etc. Schaut man in YaST (oder zypper) nach, kommen Pakete aus unterschiedlichen Quellen.

Der Kernel kommt vom Anbieter „SUSE LLC“ (ist also ein SLE-Paket), VirtualBox pflegt die Community und der Anbieter ist hier „openSUSE“. Shim hat nach der Installation jedoch nur die Zertifikate von SUSE hinterlegt. Das kann man mit folgendem Kommando nachschauen:

$ mokutil -l

Dort erscheinen dann mehrere Einträge unter der Aufliste [key 1], [key 2] etc. in dieser Form:

SHA1 Fingerprint: bc:a4:e3:8e:d1:84:2b:c8:6f:f7:6d:4d:a7:49:51:f1:62:88:59:f8
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=SUSE Linux Enterprise Secure Boot CA, C=DE, L=Nuremberg, O=SUSE Linux Products GmbH, OU=Build Team/emailAddress=build@suse.de
        Validity
            Not Before: Apr 18 14:33:41 2013 GMT
            Not After : Mar 14 14:33:41 2035 GMT
        Subject: CN=SUSE Linux Enterprise Secure Boot CA, C=DE, L=Nuremberg, O=SUSE Linux Products GmbH, OU=Build Team/emailAddress=build@suse.de
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:cd:fd:ab:d7:2a:84:f8:81:c3:36:35:50:35:2c:
                    c7:ec:04:f1:f4:d6:cc:60:4b:c8:13:b3:74:9b:bd:
                    f6:c4:3f:63:3e:66:51:f2:7e:3f:6e:7c:76:7b:71:
                    9d:69:21:2a:15:9b:aa:a5:e5:56:c8:79:98:12:35:
                    cd:7b:63:8c:b8:37:29:ee:77:50:bc:b7:64:8f:fe:
                    26:4a:e5:83:18:1c:6c:5d:b4:87:ef:d7:33:c4:f8:
                    1a:3f:29:9a:84:5a:01:e0:d9:81:6d:31:77:62:29:
                    f5:c1:65:14:df:4a:1d:fb:b7:4a:46:3b:f3:90:8b:
                    a2:b8:26:2a:0a:c3:9e:54:b5:03:60:81:e3:d9:58:
                    35:ed:b0:0b:e2:4f:6b:ef:69:ba:8b:47:df:a4:c5:
                    da:d0:d2:25:aa:85:63:3e:2f:05:db:4c:69:02:a6:
                    0e:35:b3:c2:ae:70:b0:ff:25:80:31:c7:0d:39:74:
                    a3:c0:a4:50:cd:9f:3f:85:b7:62:fb:7b:92:6d:c8:
                    1e:12:d2:ee:0f:96:f4:01:30:d1:ed:e2:10:ec:d2:
                    b2:b8:a1:e1:c5:2d:b3:b1:1e:f8:c5:fa:79:68:9d:
                    e5:a1:92:0f:5e:4f:45:42:7e:90:18:55:8c:fe:c2:
                    13:31:b8:21:de:ac:30:9d:99:e1:6b:44:61:0c:43:
                    3d:75
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Subject Key Identifier: 
                EC:AB:0D:42:C4:56:CF:77:04:36:B9:73:99:38:62:96:5E:87:26:2F
            X509v3 Authority Key Identifier: 
                keyid:EC:AB:0D:42:C4:56:CF:77:04:36:B9:73:99:38:62:96:5E:87:26:2F
                DirName:/CN=SUSE Linux Enterprise Secure Boot CA/C=DE/L=Nuremberg/O=SUSE Linux Products GmbH/OU=Build Team/emailAddress=build@suse.de
                serial:01

            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign, CRL Sign
    Signature Algorithm: sha256WithRSAEncryption
         12:be:2c:85:85:5a:94:59:cd:49:51:08:17:c1:d9:63:27:29:
         d3:9e:9d:3f:15:03:99:24:14:9e:ed:77:41:18:f9:b2:f7:5f:
         b7:21:3a:ab:5e:0c:aa:a3:fd:b5:f0:a2:12:89:09:79:dd:09:
         70:a6:af:9c:22:21:91:02:26:b5:0f:ba:7b:c1:b8:3b:c2:c8:
         3e:4e:bb:74:cd:91:57:7a:cd:f4:c1:f6:2a:e6:98:df:59:a7:
         44:04:08:0d:09:f7:e4:07:3d:74:4d:28:cb:8d:0a:d5:c1:6e:
         4d:fb:25:09:32:8a:be:af:ce:37:4f:35:79:e8:7b:b2:e8:b0:
         4e:56:12:39:c9:3c:fb:5f:b8:b6:ad:22:58:7f:24:16:33:ca:
         1e:1c:b8:fc:62:5e:4c:ac:e0:7d:83:24:ee:9b:10:78:98:e2:
         e6:4a:ac:0a:cc:98:94:07:4a:69:18:fa:21:74:b5:12:48:42:
         83:76:8e:8a:48:7f:c6:8d:1e:cc:ee:e0:62:73:09:f3:c0:90:
         f7:49:57:d3:f6:7c:7d:1c:a1:76:9d:76:65:1e:fb:39:56:24:
         10:ae:ed:ea:3f:5b:5c:ea:2d:1e:5c:49:cf:4d:85:b6:fb:39:
         19:70:dd:1e:e6:21:f2:a3:31:19:1e:c3:b4:ae:f7:35:a7:a1:
         b4:61:6b:4e
Code-Sprache: PHP (php)

Relevant ist der Punkt in Zeile 7. Das Zertifikat wurde durch SUSE ausgestellt. Das für VirtualBox ausgelieferte Kernelmodul wird folglich als ungültig erkannt und nicht geladen. Das ist ja auch sinnvoll und entspricht genau dem Konzept.

Die Lösung besteht darin, den openSUSE Schlüssel hinzuzufügen. Dazu benötigt man das Paket openSUSE-signkey-cert. Dieses sollte vorinstalliert sein, aber lässt sich sonst schnell nachinstallieren.

# zypper in openSUSE-signkey-certCode-Sprache: PHP (php)

Anschließend fügt man das enthaltene Zertifikat hinzu:

# mokutil --import /etc/uefi/certs/BDD31A9E-kmp.crt'Code-Sprache: PHP (php)

Hier muss man nun ein Passwort festlegen, das beim nächsten Neustart der Autorisierung dient. Hierbei darauf achten keine Sonderzeichen zu nutzen oder ggf. zu wissen, wo sich diese auf einem englischen Tastaturlayout befinden, da der MOK Manager nach dem Start kein deutsches Tastaturlayout hat.

Nun führt man einen Neustart durch. Es erscheint ein Bluescreen mit dem MOK Manager. Hier importiert man den Schlüssel und gibt das eben festgelegte Passwort ein.

Danach kann man nochmal schauen, welche Schlüssel hinterlegt sind:

$ mokutil -l

Hier sollte nun ein Schlüssel von openSUSE zu sehen sein.

SHA1 Fingerprint: bd:d3:1a:9e:0f:7e:d3:12:76:84:65:e6:57:8e:0d:c0:00:64:46:16
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            fa:be:d8:bf:40:9a:5e:64
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=openSUSE Secure Boot CA, C=DE, L=Nuremberg, O=openSUSE Project/emailAddress=build@opensuse.org
        Validity
            Not Before: Mar  2 13:01:54 2021 GMT
            Not After : Jan  9 13:01:54 2031 GMT
        Subject: CN=openSUSE Secure Boot Signkey, C=DE, L=Nuremberg, O=openSUSE Project/emailAddress=build@opensuse.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:f2:c8:f4:01:12:b8:0d:1a:a9:72:e0:47:05:fb:
                    95:4d:6d:77:a1:e1:0b:73:a3:fa:4c:0a:24:9b:c5:
                    fe:4c:00:fb:5b:e2:5b:fd:5c:0b:8b:d2:f6:6b:a2:
                    80:51:de:dd:be:02:3f:06:7d:59:1c:5b:e5:6c:a2:
                    de:7c:4f:d5:f8:d8:c0:59:b2:80:19:ea:5a:fc:cc:
                    4f:11:99:04:5b:a1:71:04:29:48:f0:db:8d:63:84:
                    88:5b:29:55:96:ef:90:11:7b:b7:47:2e:d4:47:29:
                    29:a1:e5:fa:93:ea:55:d5:ab:87:5d:66:93:b6:d2:
                    8e:76:06:01:9d:01:14:74:37:6e:78:42:b8:7d:7e:
                    a7:83:c8:30:b0:05:64:84:50:f6:cb:96:f6:de:5c:
                    68:ea:07:2b:aa:62:7e:2b:0e:63:2f:96:47:76:bf:
                    d8:01:53:09:92:1d:64:8b:9e:56:9b:cf:1e:11:a0:
                    8c:40:e8:13:4c:27:a0:08:39:94:a0:e7:f9:20:14:
                    4b:b2:62:5b:2f:e1:75:3d:94:73:f3:a3:1f:5a:27:
                    5e:2f:7d:91:35:83:38:cc:10:03:e8:36:77:b2:40:
                    3e:d2:ee:7a:97:0a:a6:25:1b:15:a4:7e:ec:a2:58:
                    5a:19:1f:8a:de:96:63:3e:34:b0:2e:90:3c:c0:07:
                    22:3f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier: 
                9D:DF:43:D9:F1:A0:27:27:3F:52:C6:C0:77:59:08:EE:01:67:13:25
            X509v3 Authority Key Identifier: 
                keyid:68:42:60:0D:E2:2C:4C:47:7E:95:BE:23:DF:EA:95:13:E5:97:17:62
                DirName:/CN=openSUSE Secure Boot CA/C=DE/L=Nuremberg/O=openSUSE Project/emailAddress=build@opensuse.org
                serial:01

            X509v3 Key Usage: critical
                Digital Signature
            X509v3 Extended Key Usage: 
                Code Signing
    Signature Algorithm: sha256WithRSAEncryption
         9e:32:bb:ac:bd:d3:fc:5b:b8:e3:71:10:48:1d:dc:57:65:7c:
         e2:94:1c:39:c4:1f:dd:d0:92:c7:c5:53:d7:86:53:82:4a:75:
         44:63:38:aa:be:15:f1:fa:00:ec:5c:ab:f5:41:3e:c7:6c:c4:
         33:37:15:cb:67:99:d9:a8:a1:3b:fa:9a:43:f2:46:66:2f:1c:
         a7:5a:63:ab:49:cd:31:44:23:81:71:74:60:6c:a7:41:a9:e3:
         6f:fe:3c:57:97:8e:17:d6:75:87:fc:10:d0:72:12:4d:d9:30:
         b2:f1:94:4b:49:5e:1d:3d:cb:8d:75:8d:44:bf:50:06:9d:50:
         8b:90:39:20:4e:6d:f2:fa:57:3b:10:2f:1c:d4:ec:2a:cc:7a:
         c7:6a:7c:47:7c:95:2d:7e:eb:63:ce:31:bc:12:42:a8:70:d8:
         f6:d6:03:43:65:5b:55:7e:c2:13:0e:71:f4:57:df:a1:b6:29:
         63:fb:35:94:25:7f:7e:13:93:86:6f:ea:fe:9f:4f:af:78:72:
         77:12:8f:e0:fa:31:c7:00:6d:20:8f:e9:d3:32:53:31:61:04:
         7c:eb:0a:ff:30:12:de:ff:0b:b6:5c:fc:de:04:e4:59:7f:b6:
         a1:7a:63:fd:64:45:b1:85:88:11:74:cf:c0:49:b8:33:06:16:
         c7:0e:6b:33Code-Sprache: PHP (php)

VirtualBox startet nun regulär und ohne Probleme.

Warum die Entwickler es nicht hinbekommen diesen Schlüssel standardmäßig zu integrieren, ist mir nicht klar. Vermutlich eine dieser noch nicht ganz ausgestandenen Schwierigkeiten beim Zusammenspiel von SUSE und Community im Rahmen der Entwicklung von Leap.

Cruiz
Cruizhttps://curius.de
Moin, meine Name ist Gerrit und ich betreibe diesen Blog seit 2014. Der Schutz der digitalen Identität, die einen immer größeren Raum unseres Ichs einnimmt ist mir ein Herzensanliegen, das ich versuche tagtäglich im Spannungsfeld digitaler Teilhabe und Sicherheit umzusetzen. Die Tipps, Anleitungen, Kommentare und Gedanken hier entspringen den alltäglichen Erfahrungen.
  1. Ich habe im letzten halben Jahr KVM mit Qemu als Frontend (virt-manager) lieben gelernt… Nachdem ich wirklich über 10 Jahre täglich VBox benutzt habe, sind mir ganz wenige Instabilitäten die letzten Jahre aufgefallen.

    Nun möchte ich nicht missionieren, nur drauf hinweisen, dass die Distro deiner Wahl bereits eine wahnsinnig gute Virtualisierumgebung mitbringt.

Kommentieren Sie den Artikel

Ergänzungen dienen der Diskussion über die Inhalte des Artikels. Nachfragen, Anmerkungen und Ergänzungen sind dezidiert erwünscht. Ergänzungen werden vor der Veröffentlichung moderiert. Wir behalten uns vor Kommentare ohne inhaltlichen Bezug oder abseitige Diskussionen nicht zu veröffentlichen.

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Weitere Artikel