温馨提示×

linux openssl如何签名

小樊
41
2026-09-16 18:04:11
栏目: 云计算

在 Linux 下使用 OpenSSL 进行签名,通常分为 RSA / ECDSA 等非对称签名对文件做数字签名 两类场景。下面按常见用法一步步说明。


一、生成密钥(以 RSA 为例)

1. 生成私钥

openssl genrsa -out private.key 2048

2. 提取公钥

openssl rsa -in private.key -pubout -out public.key

二、对文件进行签名(推荐方式)

✅ 推荐:对文件哈希签名(安全、通用)

1. 对文件签名

openssl dgst -sha256 -sign private.key -out file.sig file.txt
  • file.txt:原始文件
  • file.sig:生成的签名文件(二进制)

2. 验证签名

openssl dgst -sha256 -verify public.key -signature file.sig file.txt

输出:

Verified OK

三、使用 ECDSA 签名(更现代)

1. 生成 ECDSA 密钥

openssl ecparam -genkey -name prime256v1 -out ec.key
openssl ec -in ec.key -pubout -out ec.pub

2. 签名与验证

openssl dgst -sha256 -sign ec.key -out file.sig file.txt
openssl dgst -sha256 -verify ec.pub -signature file.sig file.txt

四、生成“可读签名”(Base64)

有些场景需要文本格式签名:

openssl dgst -sha256 -sign private.key file.txt | base64 > file.sig.b64

验证时先解码:

base64 -d file.sig.b64 > file.sig
openssl dgst -sha256 -verify public.key -signature file.sig file.txt

五、对已有哈希值签名(进阶)

openssl dgst -sha256 file.txt
# 得到 hash 值后手动签名(不常用)

六、常见错误说明

❌ 直接用 rsautl 签大文件(不推荐)
✅ 始终使用 dgst -sign


七、典型使用场景

  • 软件发布签名
  • API 请求签名
  • 许可证文件签名
  • 固件校验

如果你有 具体场景(如:JWT、HTTPS 证书、API 签名、SSH、PKCS#7、CMS),可以告诉我,我可以给更针对性的示例。

0