使用SoftHSM生成Ed25519密钥对时遇PKCS #11用户错误求助
问题解决:SoftHSM中生成Ed25519密钥对出现PKCS#11用户错误
错误根源分析
你遇到的Error in pkcs11_generate:1355: PKCS #11 user error主要由三个问题导致:
- 多余的
--bits 1024参数:Ed25519密钥长度是固定的(256位),不需要手动指定比特数,该参数会导致p11tool解析错误。 - 重复初始化token:先用
softhsm2-util完成了token初始化,后续又用p11tool --initialize重复操作,导致token状态异常,PIN配置冲突。 - PIN参数混用:
--login操作应使用用户PIN(mysecret1),而非SO PIN(mysopin1),SO PIN仅用于管理员级别的token操作(如重置用户PIN)。
修复步骤
1. 清理异常token(可选)
如果之前的token状态混乱,先删除现有token:
softhsm2-util --delete-token --token token-label
2. 重新初始化token(仅用softhsm2-util)
使用softhsm2-util完成token初始化,这一步已经同时设置了SO PIN和用户PIN,无需再用p11tool重复初始化:
softhsm2-util --init-token --free --label token-label --so-pin mysopin1 --pin mysecret1
3. 正确生成Ed25519密钥对
执行以下命令生成密钥,注意移除多余的--bits参数,并用用户PIN登录:
# 先获取token URL(和你之前的操作一致) export TOKEN=$(p11tool --list-token-urls | grep token-label) # 生成Ed25519密钥对 p11tool --login --pin mysecret1 --generate-privkey=Ed25519 --label my-ed25519-key --outfile MyNewKey.pub "$TOKEN"
额外排查项
如果问题仍存在,可以尝试:
- 检查SoftHSM版本:Ubuntu 22.04默认的
softhsm包是SoftHSMv2,它支持Ed25519,但可以通过softhsm2-util --version确认版本,确保是最新稳定版。 - 启用调试日志:导出环境变量开启调试,查看详细错误信息:
export SOFTHSM2_DEBUG=1 # 重新执行生成密钥的命令 - 验证OpenSSL PKCS11引擎:确保Docker中安装的
libengine-pkcs11-openssl正常工作,执行openssl engine pkcs11 -t确认引擎可用。
内容的提问来源于stack exchange,提问作者Kjeld Flarup
相关产品推荐
相关产品推荐

