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