公钥:应用接入证书模式为上传公钥时,参与者需在本地客户端自主生成公私钥对,在本地自行保存私钥,并上传公钥至BSN。建议使用OpenSSL最新版本生成密钥,如果应用服务的框架是Fabric-secp256r1请使用prime256v1密码算法标识,Fabric-sm2、FISCO-sm2和XuperChain-sm2使用sm2,FISCO-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文件,并将pub.pem、data.txt 和signature64.txt中的全部内容对应复制到界面的公钥、测试数据和签名数据文本框中进行验证。
测试数据:应用接入证书模式为上传公钥时,参与者需将公钥上传至BSN,BSN为验证用户上传公钥的有效性,需用户对一段数据使用私钥进行签名,然后将公钥、测试数据、签名数据一同上传至BSN,BSN使用用户上传的公钥对签名数据进行验签,其中待签名的数据为测试数据。
签名数据:应用接入证书模式为上传公钥时,参与者需将公钥上传至BSN,BSN为验证用户上传公钥的有效性,需用户对一段数据使用私钥进行签名,然后将公钥、测试数据、签名数据一同上传至BSN,由BSN使用用户上传的公钥对签名数据进行验签,其中用户使用私钥对一段数据进行签名的结果为签名数据。