这段时间一直在看CA的相关内容,在能够利用CA动态的生成证书后,就开始思考如何把CA生成的证书加入到网络中,和链码进行交互。目前应该是只有下面两种方法:
1.通过SDK来与网络交互
这点是官方文件就已经给出的,包含管理员enroll,新用户register,新用户enroll以及利用新用户证书query和invoke操作等。就按照官方顺序一步步的操作下来,一点问题没有。
2. 通过cli交互
因为1.4版本官方已经给出了包含启动ca镜像的脚本文件(./byfn.sh )了,所以就一直想着可以通过cli直接改变msp路径来使用新生成的证书。(参考深蓝大神 https://www.cnblogs.com/studyzy/p/7482451.html)
基本过程:
1)使用命令 ./byfn.sh up -a -s couchdb 启动网络
2)进入ca-peerOrg1容器
docker exec -it ca_peerOrg1 bash
3) 注册管理员用户以及注册新用户
cd /usr/local/bin
export FABRIC_CA_CLIENT_HOME=$HOME/ca
./fabric-ca-client enroll -u http://admin:adminpw@localhost:7054
./fabric-ca-client register --id.name Jim --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'
./fabric-ca-client enroll -u http://Jim:password@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/Jim
4)此时在/root/ca文件夹中就会出现:

其中msp对应的是管理员用户,而Jim就是我们新注册的用户
5)通过docker cp命令将msp文件夹和Jim文件夹复制到crypto-config/peerOrganizations/org1.example.com/users中,具体的处理细节参考深蓝大神的 https://www.cnblogs.com/studyzy/p/7482451.html
最终处理效果:
管理员账户

Jim用户

6)在安装好大神写的链码后,进入cli容器切换用户调用链码(?代指Jim或devin):
docker exec -it cli bash
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/?/msp
peer chaincode query -C mychannel -n test1 -c '{"Args":["cert"]}'
7)结果:
管理员用户:

成功!!!!!
Jim用户:

出错!竟然出错了!!! 简直不敢相信!!
后面还把Jim的admincerts文件夹内容换成了msp的管理员的signcerts,结果还是出错。
不知道有没有大神能指导下,为什么普通用户就不能在cli下直接调用链码呀?
#####################################2019.09.08分割线#####################################
仔细的看了下crypto-config文件夹下的所有证书,发现所有的用户证书OU都是client!!!经过实验,client的标识的确能成功,所以作为用户来讲的话client和admin标识都可以在命令行下调用成功。不过现在还是不太清楚user和client的区别。
本文探讨了在Hyperledger Fabric网络中利用CA动态生成证书,并通过SDK与CLI两种方式实现证书与链码的交互。详细记录了从管理员enroll到新用户注册、enroll的过程,以及在CLI环境下修改MSP路径使用新证书的步骤。通过对比管理员与普通用户调用链码的结果,揭示了用户角色在CLI调用中的影响。
975

被折叠的 条评论
为什么被折叠?



