容器部署支持
- 在服务器上安装Docker应用。
yum install docker
- 准备CA/TA应用。可参考搭建TA和CA应用开发环境完成自己的CA/TA应用开发,本演示demo以itrustee_sdk中提供的helloworld为例。
- 获取源码,从gitee官网下载itrustee_sdk,libboundscheck,并将libboundscheck移动到“thirdparty/open_source/”。
git clone https://gitee.com/openeuler/itrustee_sdk.git git clone https://gitee.com/openeuler/libboundscheck.git mv libboundscheck itrustee_sdk/thirdparty/open_source/
- 准备TA应用编译资源。
- 编译helloworld demo的CA应用。
- 打开“ca_demo.c”文件。
cd ../../test/CA/helloworld/ vim ca_demo.c
- 按“i”键进入编辑模式,参照下图修改TA应用的UUID,增加TA路径。
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 生成demo_hello应用(CA)。
make
- 打开“ca_demo.c”文件。
- 编译helloworld demo的TA应用。
- 打开“manifest.txt”文件。
cd ../../TA/helloworld/ vim manifest.txt
- 按“i”键进入编辑模式,根据申请config时“configs.xml”中的配置,修改“manifest.txt”中对应的变量。
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 生成<UUID>.sec文件(TA)。
make
- 打开“manifest.txt”文件。
- 获取源码,从gitee官网下载itrustee_sdk,libboundscheck,并将libboundscheck移动到“thirdparty/open_source/”。
- 下载并导入openEuler镜像。
wget https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz docker load -i openEuler-docker.aarch64.tar.xz
- 将CA/TA及其运行的依赖文件拷贝到一个目录下,用于构建镜像。
mkdir build && cd build cp ../itrustee_sdk/test/CA/helloworld/demo_hello ./ cp ../itrustee_sdk/test/TA/helloworld/*.sec ./ cp /usr/lib64/libboundscheck.so ./ cp /usr/lib64/libteec.so ./ cp /usr/bin/tlogcat ./ cp /usr/bin/agentd ./
镜像构建目录下的文件如下。
- 应用的依赖文件可通过ldd命令查看,例如查看agentd的依赖:
ldd agentd
openEuler基础镜像已经包含除libboundscheck.so和libteec.so外的so库,因此只拷贝了这两个so库到镜像中,其他操作系统镜像根据实际情况拷贝缺失的库。
- 拷贝到容器里的ree-patch组件版本需与主机侧的版本保持一致,否则将导致容器内TEE OS功能不可用。
- 应用的依赖文件可通过ldd命令查看,例如查看agentd的依赖:
- 创建Dockerfile文件。
- 新建文件。
vim Dockerfile
- 按“i”键进入编辑模式,新增如下内容。
FROM openeuler-22.03-lts-sp1 RUN mkdir -p /vendor/bin && mkdir -p /data COPY *.so /usr/lib64/ COPY tlogcat agentd /usr/bin/ COPY *.sec /data/ COPY demo_hello /vendor/bin/ RUN chmod +x /vendor/bin/demo_hello CMD /usr/bin/agentd & /vendor/bin/demo_hello
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 新建文件。
- 执行如下命令完成镜像的构建。
docker build -t demo_hello .
- 根据镜像启动容器,并获取容器运行日志。
docker run -it --mount type=bind,source=/var/itrustee/teecd,target=/var/itrustee/teecd,readonly --device /dev/teelog:/dev/teelog:wr --device /dev/tc_ns_cvm:/dev/tc_ns_cvm:wr -d demo_hello docker logs -f <container_id>

- 当容器中涉及TA2TA、安全存储、高级语言等特性使用时,必须先启动容器内的agentd,再执行CA应用。
- 若在容器内使能高级语言,需将tee_teleport工具拷贝到容器内,tee_teleport的使用方式和主机上部署和运行高级语言一致。