首页/安全/加密与证书速查/openssl genrsa 与迁移建议

openssl genrsa 与迁移建议

genrsa 是传统 RSA 密钥生成命令,仍被大量脚本使用;OpenSSL 3 文档建议新场景改用 genpkey,两者生成的密钥格式一致。

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

genrsa 与迁移建议

genrsa 是传统的 RSA 密钥生成命令,历史脚本里随处可见,目前仍然可用。OpenSSL 3 的文档建议新场景改用 genpkey,因为后者的参数形式统一:用 -algorithm 配合 -pkeyopt,RSA、EC、Ed25519 都能套用同一套写法。两者生成的私钥格式一致、可以互相读取,所以迁移是渐进的,不必一次性替换全部脚本。

基本信息

基本用法openssl genrsa -out key.pem 2048
加密输出-aes256 或 -aes128 配合口令
迁移建议3.x 推荐 genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048
校验openssl rsa -in key.pem -noout -check
输出格式PKCS#1 形式的 RSA 私钥
位数选择2048 位是常见下限,新系统可考虑 3072 位

典型使用场景

  • 维护老脚本:继续使用,同时评估迁移到 genpkey
  • 生成兼容性最好的密钥:RSA 在各类系统中的支持面最广
  • 批量生成内部密钥:脚本统一参数并在生成后立即设权限
  • 校验密钥完整性:用 -check 确认结构正确再分发
  • 演练迁移:把旧脚本中的 genrsa 改写为等价的 genpkey 命令并比对输出

生成与校验

生成与校验
# 生成 2048 位 RSA 私钥,输出用 AES-256 口令加密
openssl genrsa -aes256 -out rsa2048.key 2048
# 校验结构与一致性
openssl rsa -in rsa2048.key -noout -check
# 查看密钥基本信息,确认位数
openssl rsa -in rsa2048.key -noout -text | head -5
# 等价的 genpkey 写法,推荐用于新脚本
# openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -aes256 -out rsa2048.key

新旧命令对照

维度genrsagenpkey
参数形式位数作为位置参数-pkeyopt 键值对
支持算法仅 RSARSA、EC、Ed25519、X25519 等
输出格式PKCS#1 RSA 私钥通用私钥结构
适用建议维护旧脚本新脚本统一使用
2048 位是当前常见下限;新系统可按合规要求选择 3072 位,或直接采用 ECC 与 Ed25519。
把位数与算法硬编码在脚本里会让升级变得昂贵:抽成变量或配置文件,迁移时只改一处。
用 -aes256 加密私钥时口令走交互输入;若必须非交互,优先使用 -passout 的 env: 或 file: 形式,避免写在命令行上。
两种命令生成的密钥可以互相读取,因此迁移可以分批进行:先在新脚本里用 genpkey,旧脚本保持不动,等自然替换完成后再统一清理。
生成大密钥需要一定时间:位数越高、熵池越紧张耗时越明显,批量生成的脚本要预留足够的超时时间,不要在超时后重试导致重复生成。

易错点

  • 脚本中把位数与算法硬编码,后续升级需要全量替换
  • 忘记 chmod 600 导致同机其他用户可读私钥
  • 口令通过命令行参数传入,被 shell 历史与进程列表记录
  • 用 1024 位甚至更短的密钥生成新资产,安全性已不被支持
  • 生成后不做校验,密钥文件损坏要到签发或部署时才暴露

数据来源与参考

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