Matter实战系列-----5.matter设备证书烧录

一、安装工具

1.1 安装Commander_Linux工具

下载地址

https://www.silabs.com/documents/public/software/SimplicityCommander-Linux.zip

下载完之后解压缩,在压缩包内执行命令如下

tar jxvf Commander_linux_x86_64_1v15p0b1306.tar.bz

Matter实战系列-----5.matter设备证书烧录_第1张图片

cd ./commander
./commander

Matter实战系列-----5.matter设备证书烧录_第2张图片

 添加到系统变量

sudo vim /etc/profile

 Commander 路径添加添加到文件中的最后一行,在任何目录下,输入 commander 即可打开 Commander 工具Matter实战系列-----5.matter设备证书烧录_第3张图片

source /etc/profile

1.2 安装JLink工具

下载地址

https://www.segger.com/downloads/jlink/JLink_Linux_V788g_x86_64.deb

安装jlink

sudo dpkg -i JLink_Linux_V788g_x86_64.deb

Matter实战系列-----5.matter设备证书烧录_第4张图片

1.3 安装交叉编译环境GCC

下载地址:

https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.tar.xz?rev=99a2bce6f4464be08eca01eda13e4e96&hash=C1BA53B2F16F00A518C5781098C2E56144EA3FCD

复制到matter文件夹,输入命令解压:

tar -xvf gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.tar.xz

1.4 编译chip-cert工具

source ./scripts/activate.sh
gn gen out/host
ninja -C out/host chip-cert

使用方式参考

./out/host/chip-cert gen-att-cert --help
 ./out/host/chip-cert gen-cd -help

1.5 利用 chip-cert 工具生成测试 PAI 证书、PAI 私钥和 CD

./out/host/chip-cert gen-att-cert --type i --subject-cn "Matter Test PAI" --subject-vid 1049 --valid-from "2023-1-15 14:30:00" --lifetime 4294967295 --ca-key credentials/test/attestation/Chip-Test-PAA-NoVID-Key.pem --ca-cert credentials/test/attestation/Chip-Test-PAA-NoVID-Cert.pem --out-key ./Silabs-Test-PAI-Key.pem --out ./SilabsTest-PAI-Cert.pem
参数说明:
type i           是指生成 PAI 证书类型。
subject-cn   是指证书主题的 DN 名。
subject-vid  是指证书主题的 Verdor ID
valid-from   是指证书有效期的开始时间。
lifetime       是指证书的有效期,以天为单位, 4294967295 代表证书永远有效,不会过期。
ca-key        是指给颁发证书进行签名的 CA 机构的私钥。
ca-cert 是指给颁发证书进行签名的 CA 机构的证书。
spake2_iteration --spake2_salt ,它们是生成 spake2_verifier 的参数,可使用命 令: ./out/host/spake2p gen-verifier --help 查看其详细说明。
out-key 是指生成的证书里面包含的公钥对应的私钥。
out 是指生成的证书。
打印密钥
cat SilabsTest-PAI-Cert.pem
cat Silabs-Test-PAI-Key.pem

生成Silabs-Test-CD.bin文件

./out/host/chip-cert gen-cd --cert ./credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem --key ./credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem --out ./Silabs-Test-CD.bin --format-version 1 --vendor-id 1049 --product-id 5555 --device-type-id 0016 --certificate-id "ZIG0000000000000001" --security-level 0 --security-info 0 --version-number 0005 --certification-type 0
参数说明:
cert 是指签名私钥对应的证书,里面包含公钥信息。
key 是指私钥,用来对 CD 进行签名。
out 是指生成的 CD 文件。
format-version 是指 CD 格式版本号。
vendor-id 是指 CD 对应的 Vendor ID
product-id 是指 CD 对应的 Product ID
device-type-id 是指 CD 对应的设备类型。
certificate-id 是指 CD 对应的证书 ID
security-level 是指 CD 对应的安全等级。
security-info 是指 CD 对应的安全信息。
version-number 是指 CD 对应的版本号。
certification-type 是指 CD 对应的证书类型, 0 表示用于开发和测试的 CD
将生成的测试 PAI 证书、PAI 私钥和 CD 拷贝到 silabs_examples/credentials/目录
cp ./Silabs-Test-* ./silabs_examples/credentials/
搭建 Silicon Labs 的 creds.py 脚本执行环境
cd ./silabs_examples/credentials
export BASE_SDK_PATH=~/matter/third_party/silabs/gecko_sdk
export ARM_GCC_DIR=~/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi

修改“creds.py”文件

在第 13 行添加
mcu_family = 'EFR32MG24'
69 行改为
execute('Flashing device app', [ "commander", "flash", device_bin, "--serialno", serial_num, "--device",mcu_family, ])
137 行到 140 行改为
execute('Erasing Page', ["commander", "device", "pageerase", "--range", "{}:+{}".format(hex(page.address),page.size), "--serialno", serial_num, "--device", mcu_family, ])
execute('Flashing PAI', ["commander", "flash", _pai_der, "--binary", "--address", hex(page.address + pai_offset), "--serialno", serial_num, "--device", mcu_family, ])
execute('Flashing DAC', ["commander", "flash", _dac_der, "--binary", "--address", hex(page.address + dac_offset),"--serialno", serial_num, "--device", mcu_family, ])
execute('Flashing CD', ["commander", "flash", cd_file, "--binary", "--address", hex(page.address + cd_offset), "--serialno", serial_num, "--device", mcu_family, ])

 # 143 行改为

subprocess.run(["commander", "readmem", "--range", "{}:+{}".format(hex(page.address), end_offset), "--serialno",serial_num, "--device", mcu_family])

 DAC 证书的生成和 Matter 安全证书(DAC/PAI/CD)的烧录

python3 ./creds.py -p /dev/ttyUSB0 -S 69408690 -B brd2601b -N "Matter Test DAC 01" -V 4169 -P 21845 -C Silabs-Test-PAICert.pem -K Silabs-Test-PAI-Key.pem -D Silabs-Test-CD.bin
该脚本实现以下功能
编译 Host 和设备端应用程序。
将设备端应用程序烧录到目标设备。
Matter 设备安全证书 DAC、PAI 及 CD 的生成和烧录
PEM 格式的证书转化为 DER 格式。
从目标设备中获取 CSR 文件。
使用 OpenSSL 生成 DAC 证书。
计算 DAC PAI CD 的偏移量。
使用 Simpicity Commander 工具烧录 DAC PAI CD 到目标设备。
生成 efr32_creds.h 头文件,后续替换设备的 Matter 工程里面的同名头文件。
参数说明:
-p 是指 USB 的端口号。
-S 是指 J-Link 的序列号。
-B 是指支持的开发板型号。
-N 是指 DAC 证书的名字。
-V 是指 Vendor ID
-P 是指 Product ID
-C 是指 PAI 证书。
-K 是指 PAI 的私钥。
-D 是指 CD 文件。

你可能感兴趣的:(Matter,matter,证书烧录)