温馨提示×

怎样使用linux openssl签名

小樊
45
2026-09-01 15:53:31
栏目: 云计算

在 Linux 下使用 OpenSSL 进行签名,通常分为三种常见场景:

  1. RSA / EC 私钥对文件签名(最常用)
  2. 对文件生成数字签名并验证
  3. 使用 X.509 证书签名(如 CSR、证书)

下面按常见用法一步步说明。


一、生成密钥(如果还没有)

1. 生成 RSA 私钥

openssl genrsa -out private.key 2048

2. 提取公钥

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

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

✅ 使用 openssl dgst(标准做法)

1. 对文件签名

openssl dgst -sha256 -sign private.key -out file.sig file.txt

说明:

  • -sha256:摘要算法(也可用 sha1、sha512)
  • file.sig:生成的签名文件
  • file.txt:被签名文件

2. 验证签名

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

输出:

Verified OK

三、使用私钥“直接加密”做签名(不推荐但常见)

⚠️ 注意:这不是标准签名方式,只是“用私钥加密”

openssl rsautl -sign -in file.txt -inkey private.key -out file.sig

验证:

openssl rsautl -verify -in file.sig -inkey public.key

四、对文件签名并生成可读签名(Base64)

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

验证:

base64 -d file.sig.b64 | openssl dgst -sha256 -verify public.key -signature /dev/stdin file.txt

五、使用证书 + 私钥签名(更高级)

1. 生成自签名证书

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

2. 使用证书签名(CMS / PKCS#7)

openssl cms -sign -signer cert.pem -inkey key.pem -in file.txt -out file.p7s -binary

验证:

openssl cms -verify -in file.p7s -CAfile cert.pem -out verified.txt

六、常见错误 & 注意点

问题 原因
unable to load Private Key 密钥格式不对
Verification Failure 文件被改动或算法不一致
签名文件很大 使用了 rsautl 对大文件直接签名

永远对“摘要”签名,不要对大文件直接加密


七、一句话总结

标准签名方式:

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

如果你有具体用途(如:代码签名、JWT、PDF、固件、HTTPS 证书),我可以给你更精确的示例。

0