JD Chain
身份认证支持两种模式:KEYPAIR
(默认)/CA
,即公私钥对和证书。
证书模式采用X.509
标准的数字证书作为用户标识,证书字段中,附加组织和角色等信息。
JD Chain
使用jdchain-cli
/openssl
生成的自签名证书,也支持使用CFCA
等国家认可的第三方CA
颁发的外部证书。
JD Chain
CA
支持RSA 2048
/ECDSA P-256
/SM2 SM3WithSM2
/ED25519
四种签名算法。
JD Chain
证书体系分ROOT
,CA
,PEER
,GW
,USER
几个类别。
使用证书Subject
中OU
字段区分。
根证书,可用于签发证书及账本初始化时作为账本证书。
中间证书,可用于签发证书及账本初始化时作为账本证书。
共识节点证书,注册参与方时需要提供PEER
类型证书。
网关证书,网关所配置公私钥对应账户信息在链上必须存储有GW
类型的证书。
普通用户证书
JD Chain
证书使用链上存储方式。主要存储于两个地方:
根证书支持列表,即支持多个参与机构使用不同的证书链,且根证书可使用
ROOT
证书,也可使用CA
(中间)证书,但节点/网关/用户证书必须由配置在JD Chain
根证书列表中的证书直接签出。
ledger.init
较KEYPAIR
模式有如下修改:
identity-mode
identity-mode=CA
identity-mode
身份认证模式,KEYPAIR
(默认)/CA
root-ca-path
root-ca-path=/**/ledger1.crt,/**/ledger2.crt
root-ca-path
根证书列表,使用ROOT
或者CA
类型证书,多个根证书使用半角逗号分割。初始化完成后,证书信息会上链存储,通过2.7 获取账本初始化配置信息可查。
cons_parti.*.ca-path
CA 模式参与方需要增加配置网关信息,网关节点IP和端口不需要填写
节点公钥配置改为证书地址:
// KEYPAIR
// cons_parti.0.pubkey-path=
// cons_parti.0.pubkey=
// CA
cons_parti.0.ca-path=/**/peer0.crt
local.conf
较KEYPAIR
模式有如下修改:
#当前参与方的公钥,用于非证书模式
# local.parti.pubkey=
#当前参与方的证书信息,用于证书模式
local.parti.ca-path=
#当前参与方的私钥文件,PEM格式,用于证书模式
local.parti.privkey-path=
节点启动和运行时会校验证书类型,时间有效性以及是否由某个根证书签出等,一旦校验失败会阻止网关接入,不再对外服务。
gateway.conf
#默认公钥的内容(Base58编码数据),非CA模式下必填;
keys.default.pubkey=
#默认网关证书路径(X509,PEM),CA模式下必填;
keys.default.ca-path=/home/imuge/jd/nodes/peer0/config/keys/gw1.crt
#默认私钥的路径;在 pk-path 和 pk 之间必须设置其一;
keys.default.privkey-path=/home/imuge/jd/nodes/peer0/config/keys/gw1.key
#默认私钥的内容(加密的Base58编码数据);在 pk-path 和 pk 之间必须设置其一;
keys.default.privkey=
网关接入网络需要配置GW
类型证书及对应的私钥信息,证书类型必须是GW
。
网关接入时会做如下认证:
GW
交易时使用证书持有者私钥签名,交易内容不包含签名用户证书信息。
交易执行前会校验所有账本根证书,签名终端用户和节点用户的证书类型及有效性。
请务必在证书到期前更新证书有效期
SDK
方式:
TransactionTemplate txTemp = blockchainService.newTransaction(ledger);
txTemp.metaInfo().ca(X509Utils.resolveCertificate("*.crt"));
命令行方式:更新账本证书
在
JD Chain
中,共识节点,网关配置的接入账户和普通用户本质都是用户账户类型,它们对应的证书管理方式一致。
SDK
方式:
txTemp.user("user address").ca(X509Utils.resolveCertificate("*.crt"));
命令行方式:更新用户证书
使用jdchain-cli
提供的keys和ca指令工具创建公私钥对以及签发证书。
其中ca-test可一键生成账本初始化所需的所有证书外加可用的普通用户证书。