setup
admin setup命令用来初始化 CA 服务。初始化操作为 CA 生成根密钥,用于加密保护 CA 写入 MySQL 中的持久化数据。因为同一个 CA 集群共用一份持久化数据,同一个集群内此命令仅需执行一次。
在初始化过程中,CA 同时生成数据加密密钥 ,CA 用此密钥向 Safeheron TEE 应用(比如:SMN Service)派发子密钥,用于加密 TEE 应用数据。数据密钥自身受根密钥保护。
CA 根密钥采用 Shamir's Secret Sharing 进行分片, 分片我们称为授权密钥分片(Unseal Key),只有达到门限数量的分片才能恢复出根密钥。请妥善保管备份授权密钥分片。
命令用法
以下是admin setup命令的参数列表
命令参数
--key-shares(int)- 根密钥分片数量,最小 2 片,最大 5 片。仅第一位执行命令的管理员需要此参数,需与--key-threshold参数同时使用
--key-threshold(int)- 恢复根密钥所需的分片数量,最小为 2,最大不能超过key-shares。仅第一位执行命令的管理员需要此参数
--nonce(string)- 初始化任务唯一标识,仅非首位执行admin setup命令的管理员需要此参数。此参数值由第一位执行命令的管理员提供
--cancel- 取消初始化任务,需要与nonce参数同时使用
--backup- 备份密钥分片,需要与nonce参数同时使用
--verify- 验证备份的密钥分片的正确性,需要与nonce参数同时使用
--status- 查看多名管理员的初始化操作状态
示例
下面以 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=
...输出说明如下:
Seal Type: Shamir- 密钥分片算法,当前固定为 Shamir
CA Setup Operation Nonce: a5eb1b35-fb33-4619-8844-c544f0917d20- 本次初始化任务的唯一标识,发送给 Admin2 和 Admin3,禁止发送给其他人
Total Shares: 3- 密钥分片数量
Threshold: 2- 恢复根密钥所需的分片门限数量
Backup Progress: x/y- 密钥分片的备份进度,x 代表已经备份分片数量,y 是分片总数量
Backup Finished: false- 密钥分片是否备份完成,当所有密钥分片备份完成后,为 true
Verify Progress: x/y- 密钥分片的验证进度,x 代表已经输入的分片数量,y 是分片总数量
Verify Success: unfinished- 密钥分片验证是否完成,当所有备份的密钥分片验证通过后,为 true
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 Success为true时,表明 Admin1,Admin2,Admin3 均已完成 setup 操作并妥善备份 Unseal Key,且已经验证了备份的 Unseal Key 正确无误,至此,代表初始化授权已经完成,即 CA 可向其他 TEE 应用提供自动授权服务。