温馨提示×

Linux openssl能签名吗

小樊
44
2026-08-25 07:40:37
栏目: 云计算

可以,Linux 上的 OpenSSL 完全可以用来做签名,而且非常常用。下面按常见场景给你一个清晰说明。


一、OpenSSL 能做什么签名?

可以:

  • 数字签名(RSA / EC / DSA)
  • 文件签名
  • 证书签名(自签 CA、CSR 签名)
  • CMS / PKCS#7 签名
  • 代码、配置、固件等数据签名

不太适合:

  • 直接“右键签名”那种图形化操作
  • Windows 的 .exe / .msi Authenticode(需要额外工具)

二、最常见的签名方式(文件签名)

1️⃣ 生成密钥(如果还没有)

RSA 示例

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

椭圆曲线(推荐)

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

2️⃣ 对文件进行签名

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

说明:

  • sha256:摘要算法
  • private.key:私钥
  • file.sig:生成的签名
  • file.txt:被签名的文件

3️⃣ 验证签名

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

✅ 成功会输出:

Verified OK

三、证书 / CA 签名(常见)

自签证书

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

用 CA 签名 CSR

openssl x509 -req -in req.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out cert.crt -days 365

四、CMS / PKCS#7 签名(适合分发)

openssl cms -sign -in data.txt -out data.cms -signer cert.crt -inkey key.pem

验证:

openssl cms -verify -in data.cms -CAfile ca.crt

五、常见用途

场景 是否适合
软件发布签名
配置 / 日志防篡改
HTTPS 证书
固件签名
Windows exe 签名 ❌(不推荐)

六、注意事项

⚠️ 私钥一定要保密
⚠️ 签名 ≠ 加密(签名用私钥,验证用公钥)
⚠️ 建议用 SHA256 以上,避免 SHA1


如果你愿意,可以告诉我:

  • 你是 签文件 / 签证书 / 签代码 / 签固件?
  • RSA 还是 椭圆曲线?
  • 是否需要 PKCS#7 / CMS / SM2?

我可以直接给你一套可复制的完整命令

0