客户端证书生成

文档目标

FISCO-BCOS提供了客户端证书生成脚本 sdk ,该脚本生成客户端证书 ca.crtclient.keystore , 本文档详细介绍客户端证书 client.keystore 生成方法。

ca.crt根证书生成方法

FISCO-BCOS区块链系统中,web3sdk与所连接的FISCO-BCOS节点必须**属于同一机构**,为了使客户端能连上FISCO-BCOS节点,web3sdk的根证书 ca.crt 必须同时包含FISCO-BCOS区块链的根证书和机构证书, 因此web3sdk的根证书 ca.crt 由链根证书和机构证书合成(设链证书为 ca.crt ,机构证书为 agency.crt, 最终输出的web3sdk根证书为 ca.crt),web3sdk根证书生成方法如下:

#将链证书拷贝到web3sdk根证书
#设链证书位于~/mydata/node0/data目录
#设web3sdk位于~/mydata/web3sdk目录
$ cd ~/mydata/web3sdk/dist/conf #进入web3sdk配置路径
$ cp ~/mydata/node0/data/ca.crt ca-agency.crt
#设FISCO-BCOS源码位于~/mydata/FISCO-BCOS/目录,拷贝证书配置:
$ cp ~/mydata/FISCO-BCOS/cert/cert.cnf .
#追加机构证书到web3sdk根证书
$ more ~/mydata/node0/data/agency.crt | cat >>ca-agency.crt
#重命名web3sdk根证书为ca.crt
$ mv ca-agency.crt ca.crt

client.keystore证书生成方法

client.keystore 是web3sdk与前置sdk连接的认证证书,在 存证案例 中, client.keystore 中包含的私钥也用于为交易签名,其生成方法如下:

#(1) web3sdk所属机构颁发sdk证书sdk.crt
# 使用ECDSA算法,生成公私钥对(sdk.pubkey, sdk.key)
# 设web3sdk位于~/mydata/web3sdk路径
 $ cd ~/mydata/web3sdk/dist/conf  #进入web3sdk配置路径
 $ openssl ecparam -out sdk.param -name secp256k1
 $ openssl genpkey -paramfile sdk.param -out sdk.key
 $ openssl pkey -in sdk.key -pubout -out sdk.pubkey
 
 # 生成证书sdk.crt
 # 设节点机构证书位于~/mydata/test_agency目录
 $ cp ~/mydata/test_agency/* .
 $ openssl req -new -key sdk.key -config cert.cnf  -out sdk.csr
 $ openssl x509 -req -days 3650 -in sdk.csr -CAkey agency.key -CA agency.crt -force_pubkey sdk.pubkey -out sdk.crt -CAcreateserial -extensions v3_req -extfile cert.cnf


 #(2) 将生成的sdk证书导入client.keystore
 # 生成临时文件keystore.p12
 $ openssl pkcs12 -export -name client -in sdk.crt -inkey sdk.key -out keystore.p12
 # 将keystore.p12导入client.keystore
 $ keytool -importkeystore -destkeystore client.keystore -srckeystore keystore.p12 -srcstoretype pkcs12 -alias client