前言:一个驱动引发的"血案"
深夜的屏幕蓝光映在我的脸上,第N次看到"Failed to enroll new keys"的报错提示时,我意识到自己掉进了一个深不见底的技术黑洞。这个看似简单的驱动签名任务,竟让我与华硕主板的UEFI固件展开了一场持续48小时的史诗级对决…
一、自签名证书的标准操作流程
1. 密钥生成三部曲
# 生成密钥对
openssl req -new -x509 -newkey rsa:2048 \
-keyout new_key.priv -outform DER -out new_key.der \
-nodes -days 36500 -subj "/CN=New_Module_Key/"
# 导入公钥(注意这里设置的密码)
sudo mokutil --import new_key.der
2. MOK管理流程
- 重启触发蓝屏界面
- 进入MOK Management菜单
- 完成密钥注册四部曲:
- Enroll MOK → View key → Continue → Yes
- 输入预设密码(非系统用户密码,可随意设置)
- 重启生效
3. 驱动签名终极命令
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file \
sha256 new_key.priv new_key.der /path/to/driver.ko
二、华硕主板的隐秘陷阱
当标准流程在mokutil --import
阶段反复报错时,我经历了:
- 重装shim-signed和mokutil
- 尝试不同密钥长度(2048/4096)
- 更换OpenSSL版本
- 甚至怀疑人生…
直到在某个英文发现蛛丝马迹:华硕主板的UEFI实现存在非标准安全引导验证!
三、绝地反击:手动注册密钥指南
1. 战前准备
- 将
new_key.der
拷贝到U盘上
2. BIOS奇袭路线
- 重启电脑,猛击F2/DEL进入BIOS
- 开启"高级模式"(华硕:F7)
- 导航路径:
Boot → Secure Boot → Key Management → db密钥库
3. 关键操作四重奏
- 选择"Append to db"
- 弹出对话框时选择"No"(反直觉!)
- 浏览选择U盘中的
.der
文件 - 系统会询问文件类型,选择"… blob"
4. 胜利曙光
- F10保存重启后,重新执行:
sudo mokutil --import new_key.der
- 此时密码验证顺利通过!(非系统用户密码,可随意设置)
后记:启示录
- 硬件厂商的"特性"可能比软件更棘手
- UEFI安全引导的实现存在厂商差异
- 在技术世界里,解决A问题的钥匙往往藏在B问题的答案里——论坛里每个风马牛不相及的方案,都可能是你绝处逢生的密码。