可以,Linux 上的 OpenSSL 完全可以用来做签名,而且非常常用。下面按常见场景给你一个清晰说明。
✅ 可以:
❌ 不太适合:
.exe / .msi Authenticode(需要额外工具)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
openssl dgst -sha256 -sign private.key -out file.sig file.txt
说明:
sha256:摘要算法private.key:私钥file.sig:生成的签名file.txt:被签名的文件openssl dgst -sha256 -verify public.key -signature file.sig file.txt
✅ 成功会输出:
Verified OK
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
openssl x509 -req -in req.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out cert.crt -days 365
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
如果你愿意,可以告诉我:
我可以直接给你一套可复制的完整命令。