Open Caict-GuoShiJie opened 1 year ago
接受关于“星火链网可信数字证书颁发规范”的标准建议,现分配编号RFC-013。RFC-013进入采纳阶段。
提出日期:2023-03-22 演示日期:2023-03-22 接受日期:2023-03-22 采纳日期:2023-05-09
编号:RFC-013 类型:标准 标题:星火链网可信数字证书颁发规范 作者:金键,jin.jian@caict.ac.cn;谢家贵,xiejiagui@caict.ac.cn;李志平,lizhiping@caict.ac.cn;张波,zhangbo3@caict.ac.cn 发布时间:2023-03-22 状态:采纳 更新时间:2023-05-09 讨论地址:https://github.com/caict-4iot-dev/bif-rfcs/issues/19 依赖RFC:
星火链网可信数字证书颁发规范
1. 序言
编号: 类型:标准 标题:星火链网可信数字证书颁发规范 作者:金键,jin.jian@caict.ac.cn;谢家贵,xiejiagui@caict.ac.cn;李志平,lizhiping@caict.ac.cn;张波,zhangbo3@caict.ac.cn 发布时间: 状态: 更新时间:2023-03-22 讨论地址: 依赖RFC:
2. 摘要
介绍星火链网可信数字证书发证方颁发证书的规范标准和系统设计指导。
3. 原理
具备颁发证书的机构可以向公开[星火链网数字证书可信数据集]()(简称:数字证书可信数据集)进行申请成为发证方,成为发证方后就能颁发可信数字证书并将自己的提供的证书模板数据在数字证书可信数据集中进行公示。普通用户可以在数字证书可信数据集中查询到发证方的相关信息包括发证服务 URL 等,结合本协议即可向发证服务进行申请数字证书。
3.1 发证方交互流程
机构需要先向公开数字证书可信数据集提交发证方注册申请,成为发证方并信息公开后,数字钱包就能进行证书的申请。使用流程如下:
3.2 数字证书颁发流程
数字证书可以由发证方直接颁发,也可以由数字钱包进行申请过程。若发证方直接颁发数字证书,只需要进入步骤5,而用户申请数字证书流程如下:
4. 规范
协议设计的签名消息需要经过JWS签名生成的 jws token,消息发送者以 did 文档中的公钥配对的私钥进行签名。有关 JWS 签名,请参见 JWS RFC文档。签名算法支持 SM2
4.1 数字证书生成
4.1.1 可信数字证书原文
可信数字证书规范请参见星火链网RFC-008:星火链网BID可信证书协议标准中的可信数字证书章节。证书原文示例如下:
4.1.2 签发后的数字证书
发证方生成支持可选择性披露的可信数字证书后,组成 JWS 消息的 payload 部分,再由发证方使用 did document 中公钥对应的私钥进行签名最后生成证书的 jws token 数据发送给数字钱包。签发后的数字证书如下:
4.2 数字证书申请
发证方可以直接颁发证书也可以支持数字钱包进行数字证书申请,需要数字钱包向发证方申请颁发数字证书可以使用此规范。 申请数据结构
format:关键字的类型。包括String、int、boolean
label:关键字标签。
value:值。
desc:其它描述。
attributes: 一组属性,属性为如下结构:
key:属性的关键字。
响应数据结构
applyNo: 申请发证反馈 ID。
4.3 证书申请状态查询
向发证方查询自己的证书申请状态。 申请数据结构
applyNo: 证书申请反馈ID。
响应数据结构
4.4 获取数字证书
数字钱包向发证方获取数字证书,发证方需校验请求发送者是证书拥有方 申请数据结构
响应数据结构
5 实现示例
5.1 安全令牌
数字钱包和服务端进行交互,需要先获取令牌(accessToken)。令牌是调用服务接口的凭据,请自行做好令牌的管理。令牌中包含(请求者 bid,请求者 publickey )相关数据的JWT编码处理,数字钱包和发证服务的每次交互都要携带令牌。
5.1.1 获取流程
5.1.2 令牌使用方法
在请求接口之前,请将令牌信息以 accessToken:{{accessToken}} 的键值对的形式放在请求头 (header) 中
5.1.3 接口
1.获取随机数
请求参数说明:
成功的返回JSON数据:
响应参数说明:
2.授权
请求参数说明:
成功的返回 JSON 数据:
响应参数说明:
5.2 数字证书申请
请求数据
返回数据
5.3 证书申请状态查询
请求数据
返回数据
5.4 获取数字证书
请求数据
返回数据