---
title: 容器内远程证明
description: "TEE OS从1.4.0起，为支持容器内的远程证明，新增了qca_daemon、libqca-report、QTA-report，其中libqca-report和QTA-report可从itrustee_sdk仓中获取源码，qca_daemon由用户根据自身业务进行相应开发。以下将对容器内的远程证明流程进行简要概述。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/230RC2/confidt/kunpengtrustzone_20_0054.html
sourcePath: /source/zh/kunpengboostkithistory/230RC2/confidt/kunpengtrustzone_20_0054.html
indexId: 44bc88a161645d8dffbcd2cec67db346529e62b6ecf83df529dc2fa34744735878
---
# 容器内远程证明

TEE OS从1.4.0起，为支持容器内的远程证明，新增了qca_daemon、libqca-report、QTA-report，其中libqca-report和QTA-report可从itrustee_sdk仓中获取源码，qca_daemon由用户根据自身业务进行相应开发。以下将对容器内的远程证明流程进行简要概述。

1. 参见窗口1和窗口2在host侧完成AK密钥和证书的生成及保存。
2. 参见容器部署支持启动容器，并启动qca_daemon。
  此时qca_daemon可通过sock等方式与host上的RA Service建立连接。并获取容器id和容器的nsid，并传递给RA Service。 容器id和nsid可由qca_daemon获取，传给RA Service；也可由RA Service在host侧获取，只要可以获取到容器id和nsid即可。 容器内获取容器ID和NSID的简单命令如下。 cat /proc/self/cgroup | head -1 |cut -d/ -f3 ls -l /proc/1/ns/ | grep "pid ->" | awk -F"[][]" '{print $2}'

3. RA Service将容器信息json序列化后，调用QCA lib的RegisterContainer接口，完成容器信息的注册。
4. 容器内启动待验证的TA。
5. RA Client发起远程证明挑战。需要携带待证明TA所在的容器信息，如容器ID、容器类型等。
6. RA Service接收到请求后，根据容器ID将请求转发到对应容器里的qca_daemon。
7. qca_daemon调用容器里的libqca-report发起证明请求。
  证明过程中，容器里的QTA-report会自动向host上的QTA验证容器的nsid是否与注册时的一致。然后调用TEE OS接口获取度量报告，并将容器ID、容器类型、QTA-report的度量值写入到ta_attrs字段。

8. qca_daemon将度量报告返回给RA Service，然后返回给RA Client。
9. RA client对度量报告进行验签，确认报告的完整性。
