内核模块mokutil: 注册新密钥失败

18

我正在尝试签署一些内核模块(用于虚拟机VirtualBox),如此处所述。

根据那里的说明,我创建了新的密钥:

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"

我签署了所有的模块:

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)

但是当涉及到导入密钥时,会失败

$ sudo mokutil --import MOK.der
input password: 
input password again: 
Failed to enroll new keys

这是什么原因引起的?

编辑:实际上,我刚刚注意到我无法在 mokutil 中做太多事情。例如:

$ sudo mokutil --reset
input password: 
input password again: 
Failed to unset MokNew
Failed to write MokAuth
Failed to unset MokNew
Failed to issue a reset request

我认为唯一不会出错的命令是 --sb-state,它可以正确地显示 SecureBoot 已启用,以及 --list-enrolled,它可以列出已注册的密钥。其他所有命令都会以某种方式出错。


我遇到了类似的错误,通过提供MOK.der文件的完整路径来解决它:$ sudo mokutil --import /var/lib/shim-signed/mok/MOK.der - JStrahl
我遇到了一个类似的错误,我通过提供完整的路径给MOK.der文件来修复它:$ sudo mokutil --import /var/lib/shim-signed/mok/MOK.der - undefined
1
只需将命令作为“sudo”运行即可解决问题。 - Tarik Waleed
1
只需将命令以 sudo 运行,问题就解决了。 - undefined
5个回答

12

如果您使用的是Ubuntu,您不需要设置根密码。对于其他发行版我不确定,但这应该适用于任何使用sudo的发行版。

sudo su
mokutil --import MOK.der

现在应该可以正常工作了,如果要返回普通提示符,请直接输入命令。
exit

或简单

reboot

现在您需要通过UEFI提示添加您的密钥。无论您将其命名为什么,它都应该出现,至少对我的系统是这样的。

现在您应该可以使用您的软件了。


3

我曾遇到同样的问题。通过使用 mokutil --help 命令,我进行了一些挖掘,并成功地按照以下方式解决了问题:

mokutil --set-verbosity true #optional
mokutil --password #enter password when prompted
mokutil --import MOK.der #enter same password

我希望这篇文章能够帮助到需要的人。我不知道为什么会出现这种情况,我只是想在Ubuntu上打开VMware Workstation并开启安全启动 :)

PS: Ubuntu 20.04.1桌面版


2
我曾经遇到同样的问题,发现在使用modutil时必须启用UEFI引导(我之前为了使用VMware Workstation而将其禁用)。
希望这可以帮到你!

嘿,这是一段时间以前的事了。我从未解决它,只是禁用了某种检查,现在我使用不安全的启动方式。我现在不想改变任何东西来破坏我的当前安装,但下次重新安装操作系统时,也许我会回来尝试你的建议。谢谢。 - user1950164

2
我能够解决这个问题:
  1. 设置根密码(因为我使用的是Ubuntu,根密码默认未设置)
  2. 以root身份并使用选项--root-pw来完成此操作

0

sudo 的身份运行该命令解决了我的问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接