You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从PKCS11密钥库提取公钥后OpenSSL验签失败求助

SoftHSM生成RSA密钥对后OpenSSL验签失败的解决方法

我在SoftHSM密钥库中生成了RSA密钥对,并用其为软件签名。提取公钥到目标设备后,使用pkcs11-tool可正常完成签名和验签,但用OpenSSL验签时失败,报错信息如下:

80DB511C4A7F0000:error:02000068:rsa routines:ossl_rsa_verify:bad signature:../crypto/rsa/rsa_sign.c:430:

我使用的密钥生成及验签命令序列如下:

softhsm2-util --init-token --free --label "token-label" --so-pin mysecret1 --pin mysecret1

pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --login --login-type so --so-pin mysecret1 --init-pin --new-pin mysecret1

# 创建RSA密钥对
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so -l --token-label token-label -k --key-type rsa:2048 --usage-sign --id 1002 --label rsatest --pin mysecret1

# 读取公钥到DER文件(原命令存在拼写错误:--modul 应为 --module)
pkcs11-tool --modul /usr/lib/softhsm/libsofthsm2.so --id 1002 --read-object --type pubkey -o rsa.der
# 转换公钥格式(原命令工具错误:用EC密钥工具处理RSA密钥)
openssl ec -pubin -inform DER -in rsa.der -outform PEM -out rsa.pem

# 签名文件
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --login --pin mysecret1 --sign --id 1002 -m RSA-PKCS --input text.txt --output /tmp/rsa.signature

# pkcs11-tool验签(正常通过)
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --id 1002 --verify -m RSA-PKCS --input-file text.txt --signature-file /tmp/rsa.signature

# OpenSSL验签(失败)
openssl dgst -sha512 -keyform PEM -verify rsa.pem -signature /tmp/rsa.signature text.txt

我尝试过多种PEM和DER格式组合,也修改过-sha512参数,但问题仍未解决。


解决步骤

问题源于两个关键错误,修正后即可正常验签:

  1. 修正公钥转换工具:你生成的是RSA密钥,但误用了椭圆曲线密钥工具openssl ec转换公钥,导致生成的PEM公钥无效。替换为RSA专用工具:

    openssl rsa -pubin -inform DER -in rsa.der -outform PEM -out rsa.pem
    
  2. 统一签名与验签的哈希算法:pkcs11-tool使用RSA-PKCS模式时默认用SHA-1签名,但你验签时指定了SHA-512,算法不匹配导致失败。签名时需明确指定哈希算法:

    pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --login --pin mysecret1 --sign --id 1002 -m RSA-PKCS -s SHA512 --input text.txt --output /tmp/rsa.signature
    

同时记得修正pkcs11-tool命令里的拼写错误:--modul改为--module,确保能正确读取公钥。


内容的提问来源于stack exchange,提问作者Kjeld Flarup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:15:34