---
title: 远程证明演示Demo
description: "如下步骤在一台服务器上演示远程证明，需开启四个窗口，以便演示。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/history/kunpengtrustzone_20_0029.html
sourcePath: /source/zh/kunpengboostkithistory/2300/history/kunpengtrustzone_20_0029.html
indexId: 68d01abd1dc8a5399758f8dce1ff7fbda35d787d4388e250435cb7fe3d3c5f7676
---
# 远程证明演示Demo

如下步骤在一台服务器上演示远程证明，需开启四个窗口，以便演示。

#### 窗口1

若使用AS模式，可在“窗口1”启动AS服务器。

1. 启动AS服务器，需要提前准备数据库。

```
dnf install openldap-devel postgresql-server
cd kunpengsecl/attestation/quick-scripts/
bash prepare-database-env.sh
```


2. 配置证书。

```
cd kunpengsecl/attestation/tas/cmd/
openssl genrsa -out aspriv.key 4096
openssl req -new -x509 -days 365 -key aspriv.key -out ascert.crt
```


  证书需要填写一些配置信息，可根据需要填写，演示未设置。

3. 配置“config.yaml”文件。

  a. 打开文件。

```
vim config.yaml
```


  b. 按“i”键进入编辑模式，根据如下注释信息和需求进行修改。演示只需修改basevalue。

```
tasconfig:
# 默认开放的服务端口
port: 127.0.0.1:40008
rest: 127.0.0.1:40009
# 为AS服务配置的私钥和证书
akskeycertfile: ./ascert.crt
aksprivkeyfile: ./aspriv.key
huaweiitcafile: ./Huawei IT Product CA.pem
# 如下配置仅用于测试，实际使用时请更新内容以保证安全
DAA_GRP_KEY_SK_X: 65a9bf91ac8832379ff04dd2c6def16d48a56be244f6e19274e97881a776543c65a9bf91ac8832379ff04dd2c6def16d48a56be244f6e19274e97881a776543c
DAA_GRP_KEY_SK_Y: 126f74258bb0ceca2ae7522c51825f980549ec1ef24f81d189d17e38f1773b56126f74258bb0ceca2ae7522c51825f980549ec1ef24f81d189d17e38f1773b56
# QTA的基准度量值，可从编译QTA时产生的hash_e08f7eca-e875-440e-9ab0-5f381136c600.txt文件中获取，basevalue的填写格式为【img_hash mem_hash】
basevalue: "8c6faf44d8d1fa9f83977e405caadd7d9b1194839d6034d5412fe00f5f294976 0f474ebc56dc5502f7fba2a26d983b3a6cf2da84ce44730f60d4c660d42634a6"
authkeyfile: ./ecdsakey.pub
```


  c. 按“Esc”键退出编辑模式，输入:wq!并按“Enter”键保存退出文件。
4. 启动AS服务。

```
go run main.go -T; go run main.go
```


#### 窗口2

在“窗口2”启动RA Service，用于接收RA client发起的远程证明请求。

1. 部署应用。
  在5
  QTA源码中指定了qcaserver的执行路径，因此需将qcaserver部署到对应目录下。

```
cp kunpengsecl/attestation/tee/demo/pkg/qcaserver /vendor/bin/
```


2. 启动RA Service服务。

```
cd kunpengsecl/attestation/tee/demo/qca_demo/cmd/
```


  该目录提供了qcaserver默认的config.yaml配置文件，可根据需求进行修改，演示可使用默认值。

```
qcaconfig:
server: 127.0.0.1:40007      # 默认开放的服务端口
akserver: 127.0.0.1:40008    # AS服务的端口配置
scenario: 0
nodaaacfile: ./nodaa-ac.crt  # as no daa模式的证书路径
daaacfile: ./daa-ac.crt      # as with daa模式的证书路径
```


3. 启动RA Service服务。可根据需求选择合适的场景，其中-C用于指定远程证明场景。0-3表示的场景分别为：0表示no as，1表示as no daa，2表示as with daa。

```
/vendor/bin/qcaserver -C 1
```


  启动后在AS模式下，qcaserver会主动连接AS服务获取证书。


#### 窗口3

在“窗口3”启动目标TA，作为被测试的TA。

可按照加载TA/CA应用运行演示CA/TA应用或开发的其他应用。
```
/vendor/bin/rsa_demo
```


RA Client发起调用时，目标TA应处于运行状态，否则会报uuid invalid错误，为了保证演示成功，测试CA/TA应运行足够长的时间。可在CA拉取TA后，让CA睡眠一段时间，防止TA被卸载。


#### 窗口4

在“窗口4”启动RA Client发起远程调用。

1. 进入RA client应用的目录下，里面提供了RA Client启动需要的配置文件。

```
cd kunpengsecl/attestation/tee/demo/attester_demo/cmd
```


2. 配置config.yaml文件。

  a. 打开文件。

```
vim config.yaml
```


  b. 按“i”键进入编辑模式，参照如下内容按需修改。演示修改测试TA的UUID。

```
attesterconfig:
server: 127.0.0.1:40007           # RA Service服务的端口配置
basevalue: "./basevalue.txt"      # 待测试TA的基准度量值存储的文件路径
mspolicy: 2                       # 验证策略，1为仅对比img-hash值，2为仅对比mem-hash值，3为同时对比img-hash和mem-hash两个值
uuid: 435dcafa-0029-4d53-97e8-a7a13a80c82e   # 测试TA的uuid
```


  c. 按“Esc”键退出编辑模式，输入:wq!并按“Enter”键保存退出文件。
3. 配置目标TA的基准度量。config.yaml中指定了测试TA的基准度量配置文件。

  a. 打开文件。

```
vim basevalue.txt
```


  b. 按“i”键进入编辑模式，参照如下内容按需修改。
    基准度量值可通过编译测试TA时生成的hash_{测试TA uuid}.txt获取，使用1.4.0版本之前的itrustee_sdk时，位于“itrustee_sdk/build/signtools”目录下，1.4.0版本时，位于TA的编译目录下。basevalue.txt的填写格式为：【uuid img_hash mem_hash】，示例为如下。

```
435dcafa-0029-4d53-97e8-a7a13a80c82e a1ef720498a93a36df8c3b1ea58058485de5b8146d399e837b0b709b53224542 ad36fdf631f1fdd6dc47c8d80bdf08fb752d1e93bd97ed534abbde797bf68b8b
```


  c. 按“Esc”键退出编辑模式，输入:wq!并按“Enter”键保存退出文件。
4. 若使用AS模式，需将AS的证书拷贝到当前目录。

```
cp ../../../../tas/cmd/ascert.crt TAS\ Root\ Cert.pem
```


5. 发起远程证明请求。

```
go run main.go
```


  若验证失败，且tlogcat出现如下错误，可能原因为RA client发起请求时，测试TA已经退出了。

  重新启动测试CA/TA，并重新发起请求即可。因此推荐延长测试CA/TA执行时间，为操作预留足够时间。
