首页 > 解决方案 > 对设备 CA 密钥和设备身份密钥使用 TPM 密钥句柄

问题描述

是否有人尝试在边缘设备中使用设备 CA 和身份证书的 TPM 密钥?目前设备 CA 和身份密钥在 PEM 文件中生成,并将 config.yaml 中的路径设置为 URI 链接。

我已生成 TPM 密钥并使用根 CA 生成设备 CA 和身份证书。如何通过引用句柄示例 0x81000002 来使用 TPM 密钥而不是 PEM 密钥文件?

标签: identityazure-iot-edgetpm

解决方案


目标是保护边缘设备使用 TPM 进行上游(设备身份)和下游(设备 CA)操作的证书。目前,上述两个密钥都使用不安全的 PEM 密钥文件。

操作示例:

第 1 步:用户使用 tpm2-tools 在 SRK 主键下为设备 CA 和具有永久句柄的身份密钥创建 TPM 密钥

示例:设备标识位于 0x81020000,设备 CA 位于 0x81000002

echo ">>>>>>>> Create SRK primary"
tpm2_createprimary -C o  -g sha256 -G ecc -c SRK_primary.ctx
tpm2_evictcontrol -C o -c SRK_primary.ctx  0x81000001

echo "create persistent IDevID Key"
tpm2_create -C 0x81000001 -g sha256 -G ecc -r ID_Priv.key -u ID_Pub.key
tpm2_load -C 0x81000001 -u ID_Pub.key -r ID_Priv.key -n ID_key_name_structure.data -c ID_keycontext.ctx
tpm2_evictcontrol -C o -c ID_keycontext.ctx 0x81020000

echo "create persistent devCA Key"
tpm2_create -C 0x81000001 -g sha256 -G rsa -r DevCA_Priv.key -u DevCA_Pub.key
tpm2_load -C 0x81000001 -u DevCA_Pub.key -r DevCA_Priv.key -n DevCA_key_name_structure.data -c DevCA_keycontext.ctx
tpm2_evictcontrol -C o -c DevCA_keycontext.ctx 0x81000002

第 2 步:使用上述密钥句柄创建 CSR 和证书

openssl req -new  -engine tpm2tss -key 0x81020000 -passin pass:"" -keyform engine -subj /CN=DeviceIdentity -out dev_iden.csr

Step3:需要在安全守护进程中进行修改才能使其工作

修改 config.yaml 以将上述句柄用于设备 ca 和 idendtity 的密钥,并将证书指定为 URI 路径


推荐阅读