3.11. Signer les modules du noyau avec la clé privée

Vous pouvez renforcer la sécurité de votre système en chargeant des modules de noyau signés si le mécanisme de démarrage sécurisé de l'UEFI est activé.

Votre module noyau signé est également chargeable sur les systèmes où le Secure Boot UEFI est désactivé ou sur un système non UEFI. Par conséquent, vous n'avez pas besoin de fournir une version signée et une version non signée de votre module noyau.

Conditions préalables

Procédure

  1. Exportez votre clé publique vers le fichier sb_cert.cer:

    # certutil -d /etc/pki/pesign \
               -n 'Custom Secure Boot key' \
               -Lr \
               > sb_cert.cer
  2. Extraire la clé de la base de données du SSN sous la forme d'un fichier PKCS #12 :

    # pk12util -o sb_cert.p12 \
               -n 'Custom Secure Boot key' \
               -d /etc/pki/pesign
  3. Lorsque la commande précédente vous y invite, entrez un nouveau mot de passe qui crypte la clé privée.
  4. Exporter la clé privée non chiffrée :

    # openssl pkcs12 \
             -in sb_cert.p12 \
             -out sb_cert.priv \
             -nocerts \
             -noenc
    Important

    Manipulez la clé privée non chiffrée avec précaution.

  5. Signez votre module de noyau. La commande suivante ajoute la signature directement à l'image ELF dans le fichier du module du noyau :

    # /usr/src/kernels/$(uname -r)/scripts/sign-file \
              sha256 \
              sb_cert.priv \
              sb_cert.cer \
              my_module.ko

Votre module noyau est maintenant prêt à être chargé.

Important

Dans Red Hat Enterprise Linux 9, les dates de validité de la paire de clés sont importantes. La clé n'expire pas, mais le module du noyau doit être signé pendant la période de validité de sa clé de signature. L'utilitaire sign-file ne vous en avertira pas. Par exemple, une clé qui n'est valide qu'en 2021 peut être utilisée pour authentifier un module du noyau signé en 2021 avec cette clé. Cependant, les utilisateurs ne peuvent pas utiliser cette clé pour signer un module de noyau en 2022.

Vérification

  1. Affiche des informations sur la signature du module du noyau :

    # modinfo my_module.ko | grep signer
      signer:         Your Name Key

    Vérifiez que la signature mentionne votre nom tel qu'il a été saisi lors de la génération.

    Note

    La signature annexée n'est pas contenue dans une section de l'image ELF et ne constitue pas une partie formelle de l'image ELF. Par conséquent, des utilitaires tels que readelf ne peuvent pas afficher la signature sur votre module de noyau.

  2. Charger le module :

    # insmod my_module.ko
  3. Retirer (décharger) le module :

    # rmmod my_module.ko