配置SDK
证书配置
FISCO BCOS作为联盟链,SDK连接区块链节点时通过SSL进行双向认证。JavaSDK支持SSL与国密SSL两种认证方式。
SSL连接配置
国密区块链和非国密区块链环境下,节点与SDK之间均可以建立SSL的连接,将节点所在目录nodes/${ip}/sdk/
目录下的ca.crt
、sdk.crt
和sdk.key
文件拷贝到项目的资源目录。(低于2.1版本的FISCO BCOS节点目录下只有node.crt
和node.key
,需将其重命名为sdk.crt
和sdk.key
以兼容最新的SDK)
国密SSL连接配置
FISCO-BCOS 2.5及之后的版本,在国密区块链环境下支持节点与SDK建立国密SSL连接,将节点所在目录nodes/${ip}/sdk/gm/
目录下的gmca.crt
、gmensdk.crt
、gmensdk.key
、gmsdk.crt
、gmsdk.key
文件拷贝到项目的资源目录。
重要
- 国密SSL连接只有在国密区块链环境下才可以使用。
- 是否选择国密SSL连接,SDK与区块链节点的配置要保持一致,节点配置参考 配置链属性
配置文件设置
Java应用的配置文件需要做相关配置。值得关注的是,FISCO BCOS 2.0+版本支持多群组功能,SDK需要配置群组的节点信息。将以Spring项目和Spring Boot项目为例,提供配置指引。
Spring项目配置
提供Spring项目中关于applicationContext.xml
的配置下所示。
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="encryptType" class="org.fisco.bcos.web3j.crypto.EncryptType">
<constructor-arg value="0"/> <!-- 0:standard 1:guomi -->
</bean>
<bean id="groupChannelConnectionsConfig" class="org.fisco.bcos.channel.handler.GroupChannelConnectionsConfig">
<!-- SSL certificate configuration -->
<property name="caCert" value="ca.crt" />
<property name="sslCert" value="sdk.crt" />
<property name="sslKey" value="sdk.key" />
<!-- GM SSL certificate configuration -->
<property name="gmCaCert" value="gmca.crt" />
<property name="gmEnSslCert" value="gmensdk.crt" />
<property name="gmEnSslKey" value="gmensdk.key" />
<property name="gmSslCert" value="gmsdk.crt" />
<property name="gmSslKey" value="gmsdk.key" />
<property name="allChannelConnections">
<list> <!-- 每个群组需要配置一个bean,每个群组可以配置多个节点 -->
<bean id="group1" class="org.fisco.bcos.channel.handler.ChannelConnections">
<property name="groupId" value="1" /> <!-- 群组的groupID -->
<property name="connectionsStr">
<list>
<value>127.0.0.1:20200</value> <!-- IP:channel_port -->
<value>127.0.0.1:20201</value>
</list>
</property>
</bean>
<bean id="group2" class="org.fisco.bcos.channel.handler.ChannelConnections">
<property name="groupId" value="2" /> <!-- 群组的groupID -->
<property name="connectionsStr">
<list>
<value>127.0.0.1:20202</value>
<value>127.0.0.1:20203</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<bean id="channelService" class="org.fisco.bcos.channel.client.Service" depends-on="groupChannelConnectionsConfig">
<property name="groupId" value="1" /> <!-- 配置连接群组1 -->
<property name="agencyName" value="fisco" /> <!-- 配置机构名 -->
<property name="allChannelConnections" ref="groupChannelConnectionsConfig"></property>
</bean>
</beans>
applicationContext.xml
配置项详细说明:
- encryptType: 国密开关(默认为0,关闭)
- 0: 不使用国密
- 1: 使用国密
- 开启国密功能,需要连接的区块链节点是国密节点,搭建国密版FISCO BCOS区块链参考这里)
- 使用国密SSL,在国密区块链环境基础上,SDK需要打开encryptType开关,然后配置国密SSL证书
- groupChannelConnectionsConfig:
- 配置待连接的群组,可以配置一个或多个群组,每个群组需要配置群组ID
- 每个群组可以配置一个或多个节点,设置群组节点的配置文件config.ini中
[rpc]
部分的channel_listen_ip
(若节点小于v2.3.0版本,查看配置项listen_ip)和channel_listen_port
。 - SSL配置项: SDK与节点SSL连接时使用
caCert
SL连接根证书路径sslCert
SDK证书路径sslKey
SDK证书私钥路径
- 国密SSL配置项: SDK与节点国密SSL连接时使用
gmCaCert
国密SSL连接根证书路径gmEnSslCert
国密SSL连接加密证书路径gmEnSslKey
国密SSL连接加密证书私钥路径gmSslCert
SSL连接签名证书路径gmSslKey
SSL连接签名证书私钥路径
- channelService: 通过指定群组ID配置SDK实际连接的群组,指定的群组ID是groupChannelConnectionsConfig配置中的群组ID。SDK会与群组中配置的节点均建立连接,然后随机选择一个节点发送请求。
备注:刚下载项目时,有些插件可能没有安装,代码会报错。当你第一次在IDEA上使用lombok这个工具包时,请按以下步骤操作:
- 进入setting->Plugins->Marketplace->选择安装Lombok plugin
- 进入设置Setting-> Compiler -> Annotation Processors -> 勾选Enable annotation processing。
Spring Boot项目配置
提供Spring Boot项目中关于application.yml
的配置如下所示。
encrypt-type: # 0:普通, 1:国密
encrypt-type: 0
group-channel-connections-config:
caCert: ca.crt
sslCert: sdk.crt
sslKey: sdk.key
all-channel-connections:
- group-id: 1 #group ID
connections-str:
# 若节点小于v2.3.0版本,查看配置项listen_ip:channel_listen_port
- 127.0.0.1:20200 # node channel_listen_ip:channel_listen_port
- 127.0.0.1:20201
- group-id: 2
connections-str:
# 若节点小于v2.3.0版本,查看配置项listen_ip:channel_listen_port
- 127.0.0.1:20202 # node channel_listen_ip:channel_listen_port
- 127.0.0.1:20203
channel-service:
group-id: 1 # sdk实际连接的群组
agency-name: fisco # 机构名称
application.yml
配置项与applicationContext.xml
配置项相对应,详细介绍参考applicationContext.xml
配置说明。