测试证书灌装相关问题Q&A
📌 刷任意版本的ROM都不要勾选UFS Provision,勾选会造成证书丢失
刷ROM不要做UFS Provision! 刷ROM不要做UFS Provision! 刷ROM不要做UFS Provision! 如勾选了provision选项,刷机后需要重新灌装测试证书。


介绍
DCD使用PKI体系来为HTTPS单\双向认证,MQTT,DDS等提供安全保证.研发设备要使用PKI证书与云端建立安全通信,需要预先灌装车机的身份证书,在研发设备中可以使用证书灌装工具进行手动灌装.
📌 请依据业务需求评估需要灌装测试证书或是量产证书,本文档只提供测试证书灌装指导
如需灌装量产证书,请联系体系安全同学 @王晴雯
**DCD新样件(efuse样件)**发送文件到qnx请看3.2.4
灌装证书
下载灌装工具(非小米员工申请权限请告知)

出海项目看这里:
参考:XCD 海外 PKI 证书功能说明 咨询 @钟俊杰
DCD**(Modena、MS11)**:
研发件 && 量产件:MS11 PKI 测试证书灌装工具
XCD**(Lemans、MX11)**:
研发件(刷debugROM,带root的):XCD 测试证书灌装工具
量产件(只能刷releaseROM,没有root的):XCD 量产件测试证书灌装方法
F3/F1芯片(Mann、modena-L)(AI 801\Q801):
参考:F1 Jsse 适配说明
灌装过程
XCD
XCD 5/30后E3可通过本文档灌装PKI测试证书。
# 确保设备时间为北京时间
adb root
# push测试工具到安卓
adb push importcert_xcd /data/local/tmp
adb shell
cd /data/local/tmp && chmod +x importcert_xcd
./importcert_xcd 0
## sync后,重启
sync
reboot灌装成功log参考:

## info: cert state is vaild 表明灌装成功
## info: CN is [XCD@*****]不同环境证书灌装:
# preview环境
./importcert_xcd preview
# staging环境
./importcert_xcd staging
# 然后参考3.1.2将车机切换为对应环境DCD
4月1日后的主线ROM,需要同步更新MCU。如未刷MCU,请参考《MS11 PKI 测试证书灌装工具》中备用方案
# push 程序到qnx
adb root
adb push importcert_2 /mnt/nfs
## 需要push 另外3个so库,没有ADB参考3.2.4push文件
adb push libcn_x509_common.so /mnt/nfs
adb push libcn_x509_engine.so /mnt/nfs
adb push libcn_x509_proxy.so /mnt/nfs
# 进qnx shell 执行证书灌装操作
adb shell
busybox telnet 172.16.201.200
root
ping -c 3 baidu.com
#ping baidu 不通需要执行,能ping通不需要
## 删除指向tbox的网关
route delete default 172.16.101.66
## 添加使用安卓wifi的网关
route add default 172.16.110.34
# 能ping通百度,但是提示无网络,再执行两遍,还有问题,飞书私聊
cd /var/share
chmod +x /var/share/importcert_2
LD_LIBRARY_PATH=/var/share:$LD_LIBRARY_PATH /var/share/importcert_2 0
#如需重启,执行下sync,确保数据落盘
sync
# 灌装成功标志(如下图)
action: import[*] cert success
# 灌装完成后需重启DCD如果没有看到PKI cert has been verified,自测流程:
- 灌装成功的log如下:

date获取本地时间,确认时间是否与北京时间同步ping baidu.com确认qnx是否可以联网~~(不能联网的临时解决方法可参考3.2.2)~~。- 上述步骤没有发现问题,参考3.2.1问题日志抓取查看相关log联系 @陈朋龙
F1
使用说明
本文档可以支持灌装测试证书(preview环境、staging环境、dev环境)
手动灌装测试证书程序使用说明
功能List
# ./importcert -h
===========importcert command arguments=============
'importcert ' check and import cert
'importcert [0|preview] ' import cert in preview
'importcert [1|staging] ' import cert in staging
'importcert [2|dev ] ' import cert in dev
'importcert 3 ' test pki cert in https
'importcert 4 ' get base device info [vin,vid,sn]不同环境灌装证书(preview/staging/dev):
📌 测试完成后需要重新切换回preview的证书 最后一定要切回preview环境,不然会影响后续功能**(刷机后影响依然在)** 测试完成后,应将证书切换回preview环境,否则会造成刷机后的证书不为preview环境下.
# 同证书灌装操作,需要注意的是最后执行灌装程序时需给定环境参数
# preview 环境
/var/share/importcert preview
# staging 环境
/var/share/importcert staging
# dev 环境
/var/share/importcert dev灌装不同环境证书后,需更改配置字,
-
DCD可参考域名环境配置字 配置设备环境变量
-
XCD查看当前环境:
- 修改
/mnt/vendor/persist/diagnose/diagnose_D041.txt - 对应关系为:0x0→dev, 0x1→staging, 0x2→preview, 0x3→production,重启后生效

adb shell dumpsys com.micar.ConfigService
- 修改
测试证书有效性(已作废,可重启DCD后查看应用商店是否正常来判断):
./importcert test
# ===========begin to test tls==========
# begin load OPENSSL_init_crypto
# begin load ENGINE_set_id
# {"respCode":"E0100","respMsg":"车vin号未识别","respTime":1689582530}
# ===========end to test tls==========问题自查:
问题日志抓取
slog2info | grep importcertqnx联网或时间异常
# 确认qnx时间正常
date
## Tue Jul 13 04:16:30 CST 2023
# 确认网络正常
ping -3 baidu.com
## PING baidu.com (110.242.68.66): 56 data bytes
## 64 bytes from 110.242.68.66: icmp_seq=0 ttl=45 time=19 ms网络异常解决方法:
# qnx shell中执行
# 删除指向tbox的网关
route delete default 172.16.101.66
# 添加使用安卓wifi的网关
route add default 172.16.110.34VIN和VID不正常
如果下列情况之一,请先清除对应的VIN或VID码,然后手动灌装证书
- 拆车件,没擦除VIN或VID
- 与VCCD连接后,VIN或VID不匹配或与其他件冲突
- 手动设置了VIN或VID,导致的不匹配或与其他件冲突
擦除后重启车机生效
DCD 擦除VIN/VID:
擦除方法VIN&VID诊断清除说明
# qnx shell中执行
# 擦除VIN
echo 'x7523:json:{"data":[5,117,35,27,0,248,46,23,0,0,20,46,241,144,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]}' >> /tmp/pps/spi_service/tx
# 擦除VID
echo 'x7523:json:{"data":[5,117,35,27,0,248,46,23,0,0,20,46,241,126,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]}' >> /tmp/pps/spi_service/tx
# 重启生效XCD擦除VIN/VID:
参考XCD台架搭建中的<生产修改VIN和VID的mbf文件(VCP生成刷写)>
DCD新样件(efuse) 如何连接qnx
-
前提条件
- 车机属于研发件,申请了设备白名单入库并审批通过
- 刷写ROM时勾选了研发设备刷机;未勾选请在SOC操作选项页面勾选研发设备后,点击更改设备状态。
- 需要串口线(一拖二的c型线, 带串口线的金手指均可)
-
linux版串口工具发送文件至qnx
-
安装并设置串口工具minicom
- 波特率115200
- 硬件流控制:NO

-
cd 到 /var/share 目录下
-
Ctrl + A或Ctrl + Z进入菜单,然后按S键
-
选择z-modem,然后搜索本地的文件,可按空格选定,回车发送文件

-
-
Window版**(win串口可能会被小米人阻止发送文件)**
-
选择合适的串口工具,例 MobaXterm
- 同样选择serial,设置波特率和硬件流控制**(None)**

-
同样cd到可写入的目录下 cd var/share
-
不同的串口工具有不同的send方式,mobaXterm可以右键找到”send file…”之类,选择z-modem
-
选择文件即可。
-
ls命令查看是否有发送文件**(小米人可能会阻止发送文件)**
-