# ErhaiChain TLS 使用说明文档 ## 一. 概述 `erhai`链对外部应用提供了`RPC`和`REST`服务,用于查询数据和与区块链进行交互。默认情况下都是`HTTP`协议。基于联盟链安全考虑,可以将其配置为`TLS`安全传输层协议进行通信,并且在使用国密算法`sm2`时可以配置服务端客户端双向TLS校验。 ## 二. 配置说明 ### 1. RPC开启TLS(26657端口) ``` //修改$hcd_home/config/config.tmol文件,配置TLS的证书和私钥路径, 通常设置为该节点的节点私钥和证书 //config.toml tls_cert_file = "node.crt" tls_key_file = "node.key" //若当前链使用国密算法,还需要设置GM-TLS配置为true,涉及下面2处配置文件 tls_gm = true //$hcd_home/config/app.toml文件 gm-tls = "true" ``` <!-- 修改文件如下图所示: --> <!-- ![](https://i.imgur.com/KyaXIVb.png) --> <!-- ![](https://i.imgur.com/6TN19oP.png) --> <!-- ![](https://i.imgur.com/LyEO7v6.png) --> 配置完成后,启动链出现如下日志打印则代表RPC服务TLS验证开启 ![](https://i.imgur.com/cLhp62i.png) ### 2. REST开启TLS(1317端口) ``` 1.修改$hcd_home/config/app.toml cert-file = "/Users/kenny/Code/erhai-deploy/native/sm2/config/node.crt" //设置为当前节点证书,绝对路径 key-file = "/Users/kenny/Code/erhai-deploy/native/sm2/config/node.key" //设置当前节点私钥,绝对路径 2.若当前节点使用国密算法,则还须修改 gm-tls = true ``` <!-- 5.修改文件如下图: --> <!-- ![](https://i.imgur.com/Jtg3QGc.png) --> 开启REST的TLS成功后如下图所示 ![](https://i.imgur.com/cS1cO1K.png) ### 3. REST开启国密双向TLS(1317端口) `erhai`链支持配置在使用国密算法sm2时,开启1317端口的双向TLS验证,配置方式如下: 1. 首先完成上小节的配置步骤,REST开启TLS(1317端口) 2. 配置$hcd_home/config/app.toml a. enabled-mutual-tls = true //代表开启双向TLS b. client-ca-file = "/Users/kenny/Code/erhai-deploy/native/sm2/config/ca.crt" //设置客户端的CA证书,配置为该组织的根证书,为客户端签发TLS证书时候,必须用此证书作为CA证书,方可验证通过 成功配置国密双向TLS后启动链会展示如下日志: ![](https://i.imgur.com/HPrul43.png) ## 三. 常见问题 ### tls密码算法和证书不匹配时 1.非国密证书匹配国密tls ![](https://i.imgur.com/fwkNuW2.png) ![](https://i.imgur.com/G5uh0rP.png) ![](https://i.imgur.com/PEAcXEJ.png) 2.国密证书匹配非国密tls ![](https://i.imgur.com/uTeGIF6.png) ![](https://i.imgur.com/NcqPzkz.png) ![](https://i.imgur.com/DkSl4SI.png) ![](https://i.imgur.com/Uri0RCo.png)