是否可以使用 mokutil 删除已注册的密钥而无需原始 .der 文件?

是否可以使用 mokutil 删除已注册的密钥而无需原始 .der 文件?

在与独立显卡斗争的过程中,我多次重新安装了 Ubuntu。前几次我非常小心地将用于签署 dkms 内核模块的 .priv 和 .der 密钥移动到另一个分区。不幸的是,随着我越来越沮丧,我变得不那么小心了,显然是意外地从备份中剪切和粘贴(而不是复制和粘贴),然后在下一次重新安装时重新格式化了唯一剩余的密钥。我曾经photorec尝试恢复文件,但不幸的是没有恢复 *.der 或 *.priv 文件。

取消注册机器所有者密钥 (MOK) 的预期方式似乎是

mokutil --delete keyname.der

鉴于我不再拥有公钥,还有其他方法可以取消注册吗?

答案1

要从数据库中删除一个特定的键,您可以首先使用标志--export,如下所示:

$ mokutil --export

这会将所有机器所有者密钥导出到当前目录:

$ ls -1 MOK*
MOK-0001.der
MOK-0002.der
...

它们按照以下列表进行编号

$ mokutil --list-enrolled
[key 1]
SHA1 Fingerprint:....
...
[key 2]
SHA1 Fingerprint:....

这样您就可以删除一个特定的键,例如键 1:

# mokutil --delete MOK-0001.der

答案2

搞清楚了。--reset参数起了作用。

sudo mokutil --reset

如果您已注册多个 MOK 但只想删除一个,这可能并不理想。

如果有人提出更好的选择,我会接受这个答案。

答案3

我意识到这是一个老问题,但我已经遇到过有关 VirtualBox 和机器所有者密钥的问题 —— 以至于每次 VirtualBox 无法启动会话时我都必须重建一个。

以下是我最终做的事情:

  1. 创建了一个名为的子目录mokkeys
  2. cd对该目录进行了。
  3. 执行命令mokutil --export列出所有 MOK*.der。
  4. 执行命令mokutil -l | less将列出的 der 与每个键列出的详细信息进行比较,并确定我想要删除的额外键。
  5. 为每个 MOK*.der 单独执行命令sudo mokutil --delete。(总是双重提示输入 MOK 密码,sudo 是唯一对我有用的方法 - 我一直试图删除这些密码,但花了很长时间)。
  6. 重新启动并按照 shim 提示删除键(它们在这里按顺序编号,并且与我标记为删除的键不匹配(按编号)。
  7. 该过程结束时重新启动。
  8. 执行命令“ mokutil -l | less ”来查看多余的键是否已被删除(它们已被删除)
  9. 跳了我私人的快乐舞蹈--- :-)

相关内容