genpkey 是干什么的
genpkey 是 OpenSSL 3.x 推荐的通用密钥生成入口:RSA、EC、Ed25519、X25519 都用同一条命令配合 -algorithm 与 -pkeyopt 参数完成。相比旧的 genrsa、ecparam 等分散命令,它把参数统一成键值对形式,脚本里更容易维护与审计。生成之后应立即设置权限并核对公钥,避免后续才发现密钥不合格或与证书对不上。
基本信息
| RSA | genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 |
|---|---|
| EC | genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 |
| Ed25519 / X25519 | genpkey -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算法选择
| 算法 | 建议长度 | 适用场景 |
|---|---|---|
| RSA | 3072 位 | 兼容性要求高、需对接老系统 |
| EC(P-256) | 256 位 | TLS 服务端证书,性能表现好 |
| Ed25519 | 256 位等效 | 签名与服务间认证 |
| X25519 | 256 位等效 | 密钥交换,不用于签名 |
生成后立刻设置文件权限并核对公钥,可以避免后续出现证书与私钥不匹配的返工。
口令写在命令行参数里会被 shell 历史与进程列表捕获;需要加密私钥时优先交互式输入,或从受保护的文件读取。
生成后马上用 openssl pkey 校验一次,可以提前发现截断或损坏的密钥文件,而不是等到签发证书时才暴露问题。