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)
- 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、重要工程提醒
- 不要把
ec_private.pem提交 git!私钥泄露别人可以伪造固件签名; - 网关只需要公钥 做验签,私钥永远不能放到设备端;
- 整套链路:
- PC 打包工具:bin + ec_private.pem → sha256 + signValue (R+S) → manifest
- 网关接收 bin+manifest,使用内置 ec 公钥校验
sha256和signValue;校验不通过拒绝升级;
- 如果只是临时调试,可以没有 pem,工具照常输出 bin/hex,只是 manifest 的 signValue 为空,但是网关那边验签会直接拒绝升级。