ec_private.pem的生成方法

1、ec_private.pem 是什么?

  • ec_private.pem = secp256r1 (P‑256) ECDSA 非对称私钥文件;
  • 作用:打包工具用这个私钥对 bin 固件做 ECC‑SHA256 签名,生成signValue(R+S),写入 manifest;
  • PTU 设备保存对应的公钥,PTU 收到 bin+manifest,拿公钥校验 signValue,确认固件没有被篡改。

⚠️安全提示:私钥只保存在打包电脑上,绝对不能放到网关设备上;网关只烧录公钥。

2、怎么得到 ec_private.pem(OpenSSL 生成,Windows)

  1. Windows 安装 OpenSSL,或者用 Git‑Bash 自带 openssl;打开 cmd/git‑bash 执行下面两条命令。

secp256r1 在 OpenSSL 名字又叫 prime256v1,两者是同一个曲线GitHub。

复制代码
# 1.生成secp256r1(P‑256)无密码私钥,输出ec_private.pem
openssl ecparam -name prime256v1 -genkey -noout -out ec_private.pem

# 2.从私钥导出公钥(给RK3562J PTU使用!!保存ec_public.pem,拷贝到PTU固件里面)
openssl ec -in ec_private.pem -pubout -out ec_public.pem

行完当前目录得到两个文件:

  • ec_private.pem → 给 C# 打包工具使用,不要下发设备
  • ec_public.pem → 公钥,拷贝进 网关,用于验签

把私钥给到打包工具两种方式

方式 A(默认)

把生成好的ec_private.pem复制到exe 程序同一级目录。软件启动自动读取这个路径。

方式 B(手动选择,推荐调试)

运行打包工具,点击界面按钮【选择私钥 pem】,选中生成好的ec_private.pem,文本框就会填入完整路径。

✅正确现象:日志打印 ECC签名完成 signValue:xxxxxxxxxxx,manifest 的 signValue 不再是空字符串。

3、重要工程提醒

  1. 不要把ec_private.pem提交 git!私钥泄露别人可以伪造固件签名;
  2. 网关只需要公钥 做验签,私钥永远不能放到设备端;
  3. 整套链路:
    • PC 打包工具:bin + ec_private.pem → sha256 + signValue (R+S) → manifest
    • 网关接收 bin+manifest,使用内置 ec 公钥校验sha256和signValue;校验不通过拒绝升级;
  4. 如果只是临时调试,可以没有 pem,工具照常输出 bin/hex,只是 manifest 的 signValue 为空,但是网关那边验签会直接拒绝升级。
相关推荐
2601_967987378 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li8 小时前
linux之数据链路层
linux·网络·智能路由器
修己xj8 小时前
服务器无法解析域名?一次 DNS 配置缺失的排查与修复
运维
GeW9 小时前
高端化走到深处,是数据库和Linux的事
linux
程序员初一10 小时前
Linux 远程桌面有四种做法
linux·ssh
爱吃奥利奥_wen11 小时前
SQL Server 基础语法详解:从建库建表到约束与增删改查
服务器·数据库·oracle
程序开发阿元11 小时前
1C1G 能跑什么:把留常驻服务和不留摆进一张内存表
linux·ssh
xbzb13 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮13 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
独隅13 小时前
WebStorm Linux 版安装实战与核心效能展示
linux·ide·webstorm