我正在尝试签署一些内核模块(用于虚拟机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
,它可以列出已注册的密钥。其他所有命令都会以某种方式出错。
sudo
运行,问题就解决了。 - undefined