编译远程证明SDK
环境准备
- 安装编译依赖。
yum install tar cmake make git gcc gcc-c++ openssl-devel glib2-devel rsync patch
- 以“/path/workdir”为工作目录,下载编译依赖库,各库源码都位于该工作目录下。远程证明报告使用QCBOR编码,Demo编译时依赖。
git clone https://github.com/laurencelundblade/QCBOR.git -b v1.2 git clone https://github.com/laurencelundblade/t_cose.git -b v1.1.2 cd QCBOR make make install cd ../t_cose cmake -S . -B build -DCRYPTO_PROVIDER=OpenSSL cmake --build build cmake --install build
若git clone失败,可先执行以下命令取消git clone过程中SSL校验后重试。
git config --global http.sslVerify false
- 安装远程证明库,请参见环境要求章节配置openEuler 24.03 LTS SP2的yum源。
yum install virtCCA_sdk virtCCA_sdk-devel
- 返回到工作目录,下载远程证明源代码。
cd ../ git clone -b master https://gitee.com/openeuler/virtCCA_sdk.git
编译远程证明Demo
该Demo提供了简单的远程证明流程参考代码,仅用于验证TEE远程证明功能,用户可基于Demo参考实现远程证明。
- 编译远程证明报告获取和验证的参考代码。
参考代码编译需要依赖远程证明SDK,编译前请参见环境准备安装编译依赖。
cd virtCCA_sdk/attestation/samples cmake -S . -B build cmake --build build
- 检查“build”目录下是否已生成client和server两个可执行文件。
- server端(二进制)包含了调用远程证明sdk获取远程证明报告的代码,仅供参考。
- client端(二进制)包含了报告解析和验证的代码,仅供参考。
server和client使用TCP进行数据传递,出于安全考虑,建议优先使用rats-tls。
编译rats-tls样例
rats-tls是一种支持异构硬件可执行环境的双向传输层安全性协议,提供更为安全数据传输。TEE套件完成了rats-tls的适配支持,并提供简单的Demo样例,仅用于验证rats-tls的双向验证功能,客户可基于此Demo开发自己的远程证明应用。
- 返回到工作目录下,下载源码安装rats-tls编译依赖,仅编译时依赖。
cd ../../../ git clone https://github.com/PJK/libcbor.git cd libcbor cmake -S . -B build cd build make make install
- 在工作目录,编译支持TEE套件远程证明的rats-tls动态库和参考代码。
- 在virtCCA_sdk同级目录下载rats-tls源码。
cd ../../ git clone https://github.com/inclavare-containers/rats-tls.git
- 基于特定commit点合入rats-tls支持TEE套件的patch。
cd rats-tls git reset --hard 40f7b78403d75d13b1a372c769b2600f62b02692 git apply ../virtCCA_sdk/attestation/rats-tls/*.patch
- 编译rats-tls样例代码和依赖库。
bash build.sh -s -r -c -v gcc
检查“bin”目录下是否已生成软件包。
编译initramfs
在某些场景下,客户期望在cVM启动时对cVM进行度量和验证,若验证不通过,则不启动cVM虚拟机。SDK基于buildroot和rats-tls样例提供了演示样例。
- 根据实际情况修改rats-tls.tar.gz的路径。
cd ../ vim virtCCA_sdk/attestation/initramfs/build.sh
- 编译启动时证明需要的initramfs。
cd virtCCA_sdk/attestation/initramfs export FORCE_UNSAFE_CONFIGURE=1 bash build.sh
- 如果当前目录不存在buildroot源码,build.sh将会自动下载buildroot代码,也可以自行下载buildroot源码,解压后放到“initramfs”目录下。
- 构建initramfs过程中需要联网下载一些源码,请提前配置好网络。
- rats-tls运行依赖OpenSSL库,当前buildroot构建的initramfs包含了3.2.0版本的OpenSSL,如果rats-tls依赖OpenSSL1.x的版本,可将buildroot的tag切回到2023.02.11,其默认配置的OpenSSL版本为1.1.1w。
- 编译脚本执行成功后,检查“buildroot/output/images”目录下是否已生成initramfs文件rootfs.cpio.gz。
ll buildroot/output/images/
父主题: 编译流程