setup

admin setup命令用来初始化 CA 服务。初始化操作为 CA 生成根密钥,用于加密保护 CA 写入 MySQL 中的持久化数据。因为同一个 CA 集群共用一份持久化数据,同一个集群内此命令仅需执行一次。

在初始化过程中,CA 同时生成数据加密密钥 ,CA 用此密钥向 Safeheron TEE 应用(比如:SMN Service)派发子密钥,用于加密 TEE 应用数据。数据密钥自身受根密钥保护。

CA 根密钥采用 Shamir's Secret Sharing 进行分片, 分片我们称为授权密钥分片(Unseal Key),只有达到门限数量的分片才能恢复出根密钥。请妥善保管备份授权密钥分片。

命令用法

以下是admin setup命令的参数列表

命令参数

示例

下面以 Admin1, Admin2, Admin3 三名管理员,且管理门限为 2 为例,讲解如何使用admin setup命令初始化 CA。

1、Admin1 执行以下命令,指定 CA 根密钥分片数量及门限,启动初始化任务,并备份一片密钥分片:

$ cacli admin setup --key-shares=3 --key-threshold=2

Seal Type: Shamir
CA Setup Operation Nonce: a5eb1b35-fb33-4619-8844-c544f0917d20
Total Shares: 3
Threshold: 2
-> Backup Progress: 1/3
Backup Finished: false
Verify Progress: 0/3
Verify Success: unfinished

Unseal Key: uk1./BCN5rygSWvN4eHKbCiZCEgSzp0hnUTvlqvrCaQdVig=

...

输出说明如下:

2、Admin2 执行以下命令,备份一片授权密钥分片,其中nonce值请向 Admin1 索要

$ cacli admin setup --nonce=a5eb1b35-fb33-4619-8844-c544f0917d20 --backup

Seal Type: Shamir
CA Setup Operation Nonce: a5eb1b35-fb33-4619-8844-c544f0917d20
Total Shares: 3
Threshold: 2
-> Backup Progress: 2/3
Backup Finished: false
Verify Progress: 0/3
Verify Success: unfinished

Unseal Key: uk2.2lS7XXxJKXnZLrGUXziH2ALcvUoJvl3jOzxCeHD3VRI=

...

请 Admin2 妥善保管备份 Unseal Key。

3、Admin3 执行以下命令,备份最后一片授权密钥分片,其中nonce值请向 Admin1 索要

$ cacli admin setup --nonce=a5eb1b35-fb33-4619-8844-c544f0917d20 --backup

Seal Type: Shamir
CA Setup Operation Nonce: a5eb1b35-fb33-4619-8844-c544f0917d20
Total Shares: 3
Threshold: 2
-> Backup Progress: 3/3
Backup Finished: true
Verify Progress: 0/3
Verify Success: unfinished

Unseal Key: uk3.uJjo1DvyCYfke4FeUkh2p72mq/bx33bW38yZ5z3RU/w=

...

请 Admin3 妥善保管备份 Unseal Key。

此时,三位管理员各自备份了一片密钥分片,即 Unseal Key,但 CA 初始化尚未完成。为了确保备份的正确性,管理员需要对密钥分片进行验证,验证完成后,CA 达到可用状态。下面说明如何验证备份的密钥分片。

5、Admin1 执行以下命令验证自己备份的密钥分片,其中 nonce 值与 1 至 4 步骤中一致

$ cacli admin setup --nonce=a5eb1b35-fb33-4619-8844-c544f0917d20 --verify

Please input your unseal key(Input will be hidden, and type Enter to confirm input. The nonce of the current operation is 'a5eb1b35-fb33-4619-8844-c544f0917d20'): <Admin1 input his/her unseal key and Enter>

Seal Type: Shamir
CA Setup Operation Nonce: a5eb1b35-fb33-4619-8844-c544f0917d20
Total Shares: 3
Threshold: 2
Backup Progress: 3/3
Backup Finished: true
-> Verify Progress: 1/3
Verify Success: unfinished

...

6、Admin2 执行以下命令验证自己备份的密钥分片,其中 nonce 值与 1 至 4 步骤中一致

$ cacli admin setup --nonce=a5eb1b35-fb33-4619-8844-c544f0917d20 --verify

Please input your unseal key(Input will be hidden, and type Enter to confirm input. The nonce of the current operation is 'a5eb1b35-fb33-4619-8844-c544f0917d20'): <Admin2 input his/her unseal key and Enter>

Seal Type: Shamir
CA Setup Operation Nonce: a5eb1b35-fb33-4619-8844-c544f0917d20
Total Shares: 3
Threshold: 2
Backup Progress: 3/3
Backup Finished: true
-> Verify Progress: 2/3
Verify Success: unfinished

...

7、Admin3 执行以下命令验证自己备份的密钥分片,其中 nonce 值与 1 至 4 步骤中一致

$ cacli admin setup --nonce=a5eb1b35-fb33-4619-8844-c544f0917d20 --verify

Please input your unseal key(Input will be hidden, and type Enter to confirm input. The nonce of the current operation is 'a5eb1b35-fb33-4619-8844-c544f0917d20'): <Admin3 input his/her unseal key and Enter>

Seal Type: Shamir
CA Setup Operation Nonce: a5eb1b35-fb33-4619-8844-c544f0917d20
Total Shares: 3
Threshold: 2
Backup Progress: 3/3
Backup Finished: true
-> Verify Progress: 3/3
Verify Success: true

...

Verify Successtrue时,表明 Admin1,Admin2,Admin3 均已完成 setup 操作并妥善备份 Unseal Key,且已经验证了备份的 Unseal Key 正确无误,至此,代表初始化授权已经完成,即 CA 可向其他 TEE 应用提供自动授权服务。