直接来干货。
配置并启动CA服务
下载fabric-sdk-java 1.1版本,进入 fabric-sdk-java/fabric-sdk-java/src/test/fixture/sdkintegration,这里包含了ca服务启动的脚本和配置。可以根据需要多少个caf服务来相应的修改 docker-compose.yaml。一个示例如下:
配置完后,运行 ./fabric.sh up,会启动对应的ca服务。
有两种方式与ca服务器交互,一个是使用 fabric-ca-client ,通过命令行生成相应的ca证书。还有一种是使用fabric-sdk-java, 通过java层代码和ca服务器交互,生成ca证书。如果你不需要进行证书管理,那可以直接使用命令行,方便。如果是需要进行证书管理,动态配置等,还是通过编程实现会更灵活。
代码与CA服务交互
编码实现生成ca证书共需要4步。
生成 HFCAClient 实例
sdk提供了生成HFCAClient的API
需要传两个参数:
url: ca的服务器地址,如果是本地的,就直接使用: http://localhost:7054。如果是远程的改成对应的ip或是域名就可以
properties: 可以为null
代码如下:
调用 register方法
代码比较简单,但是在1.1中需要注意一点“:
用CA生成的用户证书,需要保证user的类型为 setType(HFCAClient.HFCA_TYPE_CLIENT),否则把生成的ca证书放在fabric环境中进行部署时候会出现如下错误:
使用docker logs 查看错误为:
这个问题可以通过查看源码得到解释,源码中有一段为:
可以看出目前只支持Client和peer两种。这个在1.2就没有这个问题
调用 enroll
这里的secrectId为hfcaClient.register返回的结果
保存证书
hfcaClient.enroll返回的一个Enrollment对象,对象中可以获得一个加密的byte数组,这个是证书内容,但是不能直接把这个保存成一个私钥文件。这样直接保存会发现使用时候无法启动fabric环境。
正确的使用姿势为:
之后把这个保存成到一个文件中即可,这样私钥文件生成。
enroll.getCert() 为公钥内容,直接保存在pem文件格式就可以。
写在最后
但是根证书需要我们自己生成,可以使用openssl来生成。当然也可以通过openssl来查看生成证书的具体信息
赶快来分享关注吖
蜗牛讲技术,满满的都是干货,你值得关注。
领取专属 10元无门槛券
私享最新 技术干货