测试证书灌装相关问题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,自测流程:

  1. 灌装成功的log如下:

  1. date 获取本地时间,确认时间是否与北京时间同步
  2. ping baidu.com 确认qnx是否可以联网~~(不能联网的临时解决方法可参考3.2.2)~~。
  3. 上述步骤没有发现问题,参考3.2.1问题日志抓取查看相关log联系 @陈朋龙

F1

F1 Jsse 适配说明

使用说明

本文档可以支持灌装测试证书(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查看当前环境:

    1. 修改/mnt/vendor/persist/diagnose/diagnose_D041.txt
    2. 对应关系为: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 importcert

qnx联网或时间异常

# 确认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.34

也可参考 QNX使用Android的Wifi进行联网

VIN和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

  1. 前提条件

    1. 车机属于研发件,申请了设备白名单入库并审批通过
    2. 刷写ROM时勾选了研发设备刷机;未勾选请在SOC操作选项页面勾选研发设备后,点击更改设备状态。
    3. 需要串口线(一拖二的c型线, 带串口线的金手指均可)
  2. linux版串口工具发送文件至qnx

    1. 安装并设置串口工具minicom

      • 波特率115200
      • 硬件流控制:NO

    2. cd 到 /var/share 目录下

    3. Ctrl + A或Ctrl + Z进入菜单,然后按S键

    4. 选择z-modem,然后搜索本地的文件,可按空格选定,回车发送文件

  3. Window版**(win串口可能会被小米人阻止发送文件)**

    1. 选择合适的串口工具,例 MobaXterm

      1. 同样选择serial,设置波特率和硬件流控制**(None)**

    2. 同样cd到可写入的目录下 cd var/share

    3. 不同的串口工具有不同的send方式,mobaXterm可以右键找到”send file…”之类,选择z-modem

    4. 选择文件即可。

    5. ls命令查看是否有发送文件**(小米人可能会阻止发送文件)**