5.2 BSN密钥证书体系

  应用发布者在BSN部署链码/智能合约后,发布者可以邀请参与方参与应用。参与方(包括发布者)的链下业务系统通过城市节点网关调用链码/智能合约并进行数据交易处理。在这个过程中,参与方需要两个密钥对来完成整个操作:应用接入密钥对和用户交易密钥对。应用发布者在BSN官方专网门户内发布应用服务时,要选择该应用服务是“密钥托管模式”还是“上传公钥模式”。密钥托管模式是指上述应用接入密钥对和用户交易密钥对均由BSN生成并托管起来,参与方下载或者直接调用相应接口使用即可。上传公钥模式是由参与方在本地生成公私钥对,并在BSN官方专网门户上传应用接入公钥,和通过城市节点网关接口将公钥证书申请文件上传登记生成用户交易证书。发布者一旦选用一种模式,该应用服务的所有密钥均要按照该模式进行,并且后期无法改变密钥模式。

  1. 密钥托管模式下应用接入密钥对

  在密钥托管模式下,应用接入密钥由参与方在BSN官方专网门户内生成,托管在BSN上,并下载私钥使用。请详见后续章节内的应用服务参加说明。

  2. 密钥托管模式下用户交易密钥对

  在密钥托管模式下,当参与方参与应用服务后,其链下业务系统可以调用相应节点网关接口API来为应用注册子用户账户并生成托管子用户交易密钥对。每个子用户可以用自己的托管密钥对参与交易。参与方的业务系统连入节点网关时,使用每个子用户的UserCode去调用相应密钥对进行交易执行。在访问Fabric应用服务时,如果还没有注册子用户,节点网关会使用默认生成的子用户交易密钥对;在访问FISCO BCOS和XuperChain应用服务时,必须先调用网关API的用户注册接口生成子用户的密钥对。具体请详见Fabric、FISCO BCOS和XuperChain底层框架的密钥说明和相应接口描述。

  3. 上传公钥模式下应用接入密钥对

  在上传公钥模式下,应用服务参与方必须在本地生成应用接入密钥的公私钥对,在本地保存私钥,并在BSN官方专网门户内上传公钥文件。具体本地操作请参考本章节后附的《上传公钥模式下应用接入密钥生成方法说明》。具体如何上传公钥请参考后续章节的上传公钥内容。

  4. 上传公钥模式下用户交易密钥对

  在上传公钥模式下,应用服务参与方同理也必须先在本地生成自己的用户交易密钥的公私钥对,在本地保存私钥。然后通过城市节点网关的用户交易密钥证书登记接口,上传公钥证书申请文件进行证书登记。如果参与方的链下系统内有多个子用户,也可以为每个子用户生成各自的公私钥对并上传公钥证书申请文件进行登记。在本地生成公私钥对和公钥证书申请文件的方法可以参照网关SDK实例中的API说明。上传公钥的证书登记接口请参见本手册后续接口说明。

   网关SDK实例下载地址:

  https://github.com/BSNDA/PCNGateway-Go-SDK

  https://github.com/BSNDA/PCNGateway-Java-SDK

  https://github.com/BSNDA/PCNGateway-PY-SDK

  https://github.com/BSNDA/PCNGateway-CSharp-SDK

  在当前版本下,只有基于Hyperledger Fabric和FISCO BCOS的应用服务支持上传公钥模式,基于Xuperchain的应用服务暂时不支持上传公钥模式。

  5. 上传公钥模式下应用接入密钥生成方法说明

  如果您参与的应用服务使用上传公钥模式,您需要在本地客户端自主生成应用接入密钥的公私钥对,在本地自行保存私钥,并在BSN官方专网门户上传公钥。建议使用OpenSSL最新版本生成密钥,如果应用服务的框架是Fabric-secp256r1 请使用prime256v1 密码算法标识,Fabric-sm2FISCO-sm2XuperChain-sm2 使用SM2FISCO-secp256k1 则使用secp256k1 ,具体步骤如下:

  • 准备工作:从https://www.openssl.org/source/下载openssl最新版本;创建一个data.txt文件,里面输入一些测试字符串,如:Hello world

  • 终端输入 openssl 进入open ssl命令行

    OpenSSL>
  • 输入命令 ecparam -name prime256v1 -genkey -out key.pem 生成一个私钥文件key.pem

    OpenSSL> ecparam -name prime256v1 -genkey -out key.pem
  • 输入命令 ec -in key.pem -pubout -out pub.pem 用key.pem文件中的私钥生成一个公钥文件pub.pem

    OpenSSL> ec -in key.pem -pubout -out pub.pem
    read EC key
    writing EC key
  • 输入命令 dgst -sha256 -sign key.pem -out signature.bin data.txt 用key.pem文件中的私钥对data.txt文件进行签名生成签名文件signature.bin

    OpenSSL> dgst -sha256 -sign key.pem -out signature.bin data.txt
  • 输入命令 dgst -verify pub.pem -sha256 -signature signature.bin data.txt 用pub.pem文件中的公钥对data.txt和signature.bin文件进行签名验签

    OpenSSL> dgst -verify pub.pem -sha256 -signature signature.bin data.txt
    Verified OK
  • 如果显示Verified OK,输入命令 base64 -in signature.bin -out signature64.txt 将签名文件signature.bin转换成base64编码的 signature64.txt文件

    OpenSSL> base64 -in signature.bin -out signature64.txt
  • 输入命令 pkcs8 -topk8 -inform PEM -in key.pem -outform PEM -nocrypt -out keypkcs8.pem 将key.pem文件中的私钥转为pkcs8格式

    OpenSSL> pkcs8 -topk8 -inform PEM -in key.pem -outform PEM -nocrypt -out keypkcs8.pem
    本地自行保存好keypkcs8.pem文件,并在BSN参与应用该服务时将pub.pem、data.txt 和signature64.txt中的全部内容对应复制到上传公钥模式页面的公钥、测试数据和签名数据文本框中进行验证并提交。

Copyright 北京红枣科技有限公司

results matching ""

    No results matching ""

    results matching ""

      No results matching ""