证书生成

FISCO BCOS网络采用面向CA的准入机制,国密版FISCO BCOS要生成三级证书,包括:链证书,机构证书和节点证书。

生成链证书

FISCO BCOS提供generate_chain_cert.sh脚本生成链证书:

  1. # 进入脚本所在目录(设FISCO-BCOS位于~/mydata目录)
  2. cd ~/mydata/FISCO-BCOS/tools/scripts
  3.  
  4. # 在~/mydata目录下生成国密版FISCO BCOS链证书
  5. #--------------------------------------------------------
  6. #-o : 生成的链证书所在路径,这里是~/mydata
  7. #-g :生成国密链证书,这里必须设置
  8. # 注: (若要手动输入链证书信息,请在下面命令最后加上-m选项)
  9. #--------------------------------------------------------
  10. $ bash ./generate_chain_cert.sh -o ~/mydata -g
  11. # 此时/mydata目录下生成链证书私钥gmca.key、证书gmca.crt和参数gmsm2.param
  12. $ ls ~/mydata/
  13. gmca.crt gmca.key gmsm2.param
  14.  
  15. # 查看链证书脚本generate_chain_cert.sh使用方法:
  16. $ bash ./generate_chain_cert.sh -h
  17. Usage:
  18. -o <ca dir> Where ca.crt ca.key generate # CA证书生成目录
  19. -m Input ca information manually # 手动输入CA信息
  20. -g Generate chain certificates with guomi algorithms #生成国密版链证书
  21. -d The Path of Guomi Directory #GM证书生成脚本所在路径,默认为FISCO-BCOS/cert/GM
  22. -h This help
  23. Example:
  24. ./generate_chain_cert.sh -o /mydata -m # 非国密版链证书生成用法,手动输入证书信息
  25. ./generate_chain_cert.sh -o /mydata # 非国密版链证书生成用法,使用默认证书信息
  26. guomi Example:
  27. ./generate_chain_cert.sh -o ~/mydata -m -g # 国密版链证书生成用法,手动输入证书信息
  28. ./generate_chain_cert.sh -o ~/mydata -g # 国密版链证书生成用法,使用默认证书信息

生成机构证书

generate_agency_cert.sh 脚本用于生成机构证书:

  1. # 进入脚本所在目录(设FISCO-BCOS位于~/mydata目录)
  2. $ cd ~/mydata/FISCO-BCOS/tools/scripts
  3.  
  4. #--------------------------------------------------------
  5. # -c: 链证书所在目录,这里是~/mydata
  6. # -o: 生成的机构证书所在目录,这里是~/mydata
  7. # -n: 机构证书名,这里是test_agency
  8. # -g: 生成国密机构证书,这里必须设置
  9. # 注: (若要手动输入机构证书信息,请在下面命令最后加上-m选项)
  10. #--------------------------------------------------------
  11. $ bash ./generate_agency_cert.sh -c ~/mydata -o ~/mydata -n test_agency -g
  12.  
  13. # 此时~/mydata/test_agency目录下生成机构证书gmagency.crt和证书私钥gmagency.key
  14. $ ls ~/mydata/test_agency/
  15. gmagency.crt gmagency.key gmca.crt gmsm2.param
  16.  
  17. # 查看generate_agency_cert.sh脚本用法
  18. $ bash ./generate_agency_cert.sh -h
  19. Usage:
  20. -c <ca dir> The dir of ca.crt and ca.key # 指定颁发机构证书的CA证书和私钥所在目录
  21. -o <output dir> Where agency.crt agency.key generate # 指定机构证书输出目录
  22. -n <agency name> Name of agency # 指定机构名
  23. -m Input agency information manually # 若设置,表明手动输入机构证书信息,否则使用默认信息
  24. -g Generate agency certificates with guomi algorithms # 生成国密版机构证书
  25. -d The Path of Guomi Directory
  26. -h This help
  27. Example:
  28. bash ./generate_agency_cert.sh -c /mydata -o /mydata -n test_agency # 非国密版机构证书生成示例
  29. bash ./generate_agency_cert.sh -c /mydata -o /mydata -n test_agency -m
  30. guomi Example: #国密版机构证书生成示例
  31. bash ./generate_agency_cert.sh -c ~/mydata -o ~/mydata -n test_agency -g
  32. bash ./generate_agency_cert.sh -c ~/mydata -o ~/mydata -n test_agency -m -g

生成节点证书

generate_node_cert.sh 脚本用于生成节点证书:

  1. # 进入脚本所在目录(设FISCO-BCOS位于~/mydata目录)
  2. $ cd ~/mydata/FISCO-BCOS/tools/scripts
  3.  
  4. # 使用~/mydata/test_agency目录下机构证书为节点node0颁发证书,生成的证书置于~/mydata/node0/data目录下
  5. #--------------------------------------------------------
  6. # -a: 机构证书名,这里是test_agency
  7. # -d: 机构证书所在路径,这里是~/mydata/test_agency
  8. # -n: 节点名称,这里是node0
  9. # -o: 节点证书所在路径,这里是~/mydata/node0/data
  10. # -s: sdk证书名,这里是sdk1
  11. # -g: 生成国密节点证书,这里必须设置
  12. # (若要手动输入节点证书信息,请在下面命令最后加上-m选项)
  13. #--------------------------------------------------------
  14. $ bash ./generate_node_cert.sh -a test_agency -d ~/mydata/test_agency -n node0 -o ~/mydata/node0/data -s sdk1 -g
  15.  
  16. # 此时在~/mydata/node0/data目录下生成节点证书&&客户端连接证书
  17. $ ls ~/mydata/node0/data -1
  18. ca.crt # 节点和客户端验证所需的CA证书
  19. ca.key
  20. client.keystore
  21. gmagency.crt
  22. gmca.crt
  23. gmennode.crt
  24. gmennode.key
  25. gmnode.ca
  26. gmnode.crt
  27. gmnode.json
  28. gmnode.key
  29. gmnode.nodeid
  30. gmnode.private
  31. gmnode.serial
  32. sdk1 #存储客户端连接节点证书
  33. server.crt
  34. server.key
  35.  
  36. # 设编译好的web3sdk位于~/mydata/web3sdk目录下,则将客户端证书拷贝到相应目录:
  37. $ cp ~/mydata/node0/data/sdk1/* ~/mydata/web3sdk/dist/conf
  38.  
  39. # 查看节点证书脚本generate_node_cert.sh用法
  40. $ bash ./generate_node_cert.sh -h
  41. Usage:
  42. -a <agency name> The agency name that the node belongs to # 为节点颁发证书的机构名
  43. -d <agency dir> The agency cert dir that the node belongs to # 机构证书所属目录
  44. -n <node name> Node name # 节点名
  45. -o <output dir> Data dir of the node # 节点证书存放目录
  46. -m Input agency information manually # 手动输入节点证书信息
  47. -r The path of GM shell scripts directory
  48. -g generate guomi cert # 产生国密版节点证书
  49. -s the sdk name to connect with the node # 产生国密版节点证书时,必须产生sdk证书,-s指定sdk名称
  50. -h This help
  51. Example: # 非国密版节点证书生成示例
  52. bash ./generate_node_cert.sh -a test_agency -d /mydata/test_agency -n node0 -o /mydata/node0/data
  53. bash ./generate_node_cert.sh -a test_agency -d /mydata/test_agency -n node0 -o /mydata/node0/data -m
  54. guomi Example: #国密版FISCO-BCOS节点证书生成示例
  55. bash ./generate_node_cert.sh -a test_agency -d ~/mydata/test_agency -n node0 -o ~/mydata/node0/data -s sdk1 -g
  56. bash ./generate_node_cert.sh -a test_agency -d ~/mydata/test_agency -n node0 -o ~/mydata/node0/data -m -s sdk1 -g

SDK证书

生成节点证书时,会在节点目录下同时生成SDK证书,如上例中node0的sdk证书位于/mydata/node0/data/sdk1目录。也可使用gmsdk.sh 脚本手动生成sdk证书,但生成后需要:

  1. # 进入脚本所在目录(设FISCO-BCOS位于~/mydata目录)
  2. $ cd ~/mydata/FISCO-BCOS/tools/cert/GM
  3.  
  4. # 执行国密版SDK生成脚本gmsdk
  5. #--------------------------------------------------------
  6. # 注: 生成SDK证书时,不能输入空口令,口令长度至少为6个字符
  7. #--------------------------------------------------------
  8. $ bash ./gmsdk.sh sdk1 #生成的sdk证书位于sdk1目录下
  9.  
  10. # 用新生成的sdk证书sdk要连接的节点相关证书(设sdk要连接node0)
  11. $ cp sdk1/* ~/mydata/node0/data/

注意事项

FISCO-BCOS采用三级证书链【链证书–> 机构证书—> 节点证书】认证,同一条链的所有机构证书必须由同一个链证书颁发,节点间证书认证才能成功。