首页/安全/加密与证书速查/openssl genpkey 生成各类私钥

openssl genpkey 生成各类私钥

genpkey 是 3.x 推荐的通用密钥生成入口:RSA、EC、Ed25519、X25519 都可用同一命令加 -algorithm 与 -pkeyopt 参数完成。

加密与证书速查安全更新于 2026-10-13

genpkey 是干什么的

genpkey 是 OpenSSL 3.x 推荐的通用密钥生成入口:RSA、EC、Ed25519、X25519 都用同一条命令配合 -algorithm 与 -pkeyopt 参数完成。相比旧的 genrsa、ecparam 等分散命令,它把参数统一成键值对形式,脚本里更容易维护与审计。生成之后应立即设置权限并核对公钥,避免后续才发现密钥不合格或与证书对不上。

基本信息

RSAgenpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072
ECgenpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256
Ed25519 / X25519genpkey -algorithm ED25519 或 X25519
加密输出加 -aes256 可用口令加密私钥文件
权限要求生成后立即设为 600
版本提示3.x 推荐入口,旧命令仍可用但不建议新项目使用

典型使用场景

  • 新建服务证书:按用途先确定算法,再生成对应私钥
  • 批量生成内部密钥:脚本里用统一参数,便于审计与复现
  • 迁移旧密钥:按新算法重新生成私钥并重新签发证书
  • 为签名工具准备密钥:Ed25519 优先,兼容性不足时退回 RSA
  • 演练密钥轮换:在测试环境跑通从生成到替换的完整链路

生成三类私钥

生成三类私钥
# RSA:兼容性最好,3072 位是当前比较稳妥的选择
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out rsa.key
# EC:P-256,强度与性能平衡,TLS 生态支持最广
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec.key
# Ed25519:现代签名算法,密钥与签名都很短
openssl genpkey -algorithm ED25519 -out ed25519.key
# 用口令加密私钥文件(口令走交互输入,不要写进命令参数)
openssl genpkey -algorithm RSA -aes256 -pkeyopt rsa_keygen_bits:3072 -out enc.key
# 收尾:限制权限并做一次完整性校验
chmod 600 *.key

算法选择

算法建议长度适用场景
RSA3072 位兼容性要求高、需对接老系统
EC(P-256)256 位TLS 服务端证书,性能表现好
Ed25519256 位等效签名与服务间认证
X25519256 位等效密钥交换,不用于签名
生成后立刻设置文件权限并核对公钥,可以避免后续出现证书与私钥不匹配的返工。
口令写在命令行参数里会被 shell 历史与进程列表捕获;需要加密私钥时优先交互式输入,或从受保护的文件读取。
生成后马上用 openssl pkey 校验一次,可以提前发现截断或损坏的密钥文件,而不是等到签发证书时才暴露问题。

易错点

  • 口令写在命令行参数里会被 shell 历史记录捕获
  • 生成后未校验文件完整性,截断的密钥要到使用时报错
  • 生成后忘记设置权限,私钥以默认权限落盘被其它用户读取
  • 沿用旧命令的旧默认值(如 1024 位),强度不足以支撑当前要求
  • 为签名用途生成 X25519、为交换用途生成 Ed25519,算法用途搞混后接口直接报错

数据来源与参考

  • OpenSSL 官方文档(genpkey)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌