openssl ec 是什么
openssl ec 用于读取与转换 EC(椭圆曲线)私钥:查看曲线名称与公钥点、导出公钥、调整公钥点的压缩形式。它通常与 ecparam 配合使用——ecparam 负责生成参数与密钥,ec 负责查看与转换。EC 密钥体积远小于同等强度的 RSA 密钥,因此在证书与设备端被广泛采用,而误用最常见的原因就是把曲线名称或点编码搞混。
基本信息
| 查看 | openssl ec -in ec.key -noout -text |
|---|---|
| 导出公钥 | -pubout -out ec.pub |
| 点编码 | -conv_form compressed 或 uncompressed |
| 生成配合 | 与 ecparam 的 -name 曲线参数对应 |
| 命名注意 | P-256 与 secp256k1 完全不同;prime256v1 与 P-256 是同一曲线的不同写法 |
典型使用场景
- 签发证书前确认私钥使用的曲线是否符合要求
- 导出公钥交给对端做验签或加密
- 排查点编码不兼容引起的老实现问题
- 与 RSA 私钥做体积与性能对比,支撑选型结论
- 在 PEM 与 DER 之间转换密钥格式,以便不同工具链使用
生成查看与导出
生成查看与导出
openssl ecparam -name prime256v1 -genkey -noout -out p256.key # 生成 P-256 私钥
openssl ec -in p256.key -noout -text | head -8 # 查看曲线与公钥点
openssl ec -in p256.key -pubout -out p256.pub.pem # 导出公钥
openssl ec -in p256.key -conv_form compressed -pubout -out p256.pub.c.pem # 压缩点形式
openssl ec -in p256.key -outform DER -out p256.key.der # 转为 DER 供其他工具使用常用曲线
| 曲线 | 常用别名 | 说明 |
|---|---|---|
| P-256 | prime256v1、secp256r1 | 通用与服务端证书首选 |
| P-384 | secp384r1 | 强度更高,性能略降 |
| P-521 | secp521r1 | 较少使用,部分库支持有限 |
| secp256k1 | 无 | 与 P-256 不同,特定领域使用 |
曲线名称混用是这类命令最常见的坑:P-256 与 secp256k1 是完全不同的曲线,而 prime256v1 与 P-256 才是指同一条曲线。签发前先用 -noout -text 打印实际曲线名称核对,比对着配置反复猜测要快得多。
选型提示:EC 私钥在签名性能与体积上都优于同等强度的 RSA,移动端与设备端尤其明显,但并非所有老系统都支持 EC。落地前先确认对端工具链与协议版本支持的曲线列表,再决定是否把 EC 作为默认选择;RSA 与 EC 证书混用时,还要留意配置里的优先级顺序。
补充:转换密钥格式后建议重新做一次签验回路,确认新文件与公钥仍然配对;同时把曲线名称与点编码方式写进交接文档,避免后续维护者按 RSA 的经验去理解 EC 材料。