#TLS加密

yasboot系列工具提供TLS加密功能,将yasboot、yasom、yasagent间传输的信息以X.509的格式进行加密,提升产品安全能力。

安装部署YashanDB后,可按需开启该功能。开启前需准备xxx.key私钥文件和xxx.crt公钥证书文件,其中公钥证书文件可由CA颁发,也可通过自签名生成。

# 自签名生成私钥文件和证书文件

若已有公钥,可跳过本操作。

  1. 在任意具有读写权限的目录中,新建openssl.conf文件并输入以下内容。
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
prompt = no

[req_distinguished_name]
CN = yashan   # yashan为server_name,可根据实际需求命名

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = yashan # yashan为server_name,需与req_distinguished_name中的配置保持一致
  1. 执行如下命令,生成rpc.key私钥文件和rpc.crt公钥证书文件。
$ openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout rpc.key -out rpc.crt -config openssl.conf -extensions v3_req

参数介绍:

  • -days: 证书有效天数。
  • -keyout: 私钥文件名称。
  • -rpc.crt: 公钥证书文件名称。
  • -config: 基于此文件生成私钥和公钥。

# 开启TLS加密

# 配置tls.toml文件

  1. rpc.key私钥文件和rpc.crt公钥证书文件上传(或复制)至每台部署了YashanDB的服务器。

  2. 修改安装目录和所有部署目录下的/om/集群名称/conf/tls.toml文件。

rpc_tls_enable = false              # 修改为true
rpc_server_name = ""                # 修改为生成证书使用的server_name
rpc_tls_cert_file = ""              # 修改为rpc.crt在该服务器上的绝对路径
rpc_tls_key_file = ""               # 修改为rpc.key在该服务器上的绝对路径

# 重启yasom和yasagent

  1. 在yasom所在服务器执行如下命令,重启yasom:
$ yasboot process yasom restart -c yashandb 
  1. 在所有服务器上执行如下命令,重启yasagent:
$ yasboot process yasom restart -c yashandb 

# 验证是否开启成功

执行如下命令,打印节点的信息并根据返回结果确认是否成功开启TLS加密。

  • 场景1:执行命令不报错且成功打印数据库各节点,表示成功开启TLS加密。
  • 场景2:执行命令不报错但部分数据库节点信息未正常打印,需排查该节点运行状态是否正常,再检查该节点所在服务器是否正确开启TLS加密。
  • 场景3:执行命令报x.509等错误,可能在证书配置上存在错误,请检查所有修改过的tls.toml文件中,rpc.key私钥文件和rpc.crt公钥证书文件的路径是否正确。
$ yasboot cluster status -c yashandb -d

 hostid   | node_type | nodeid | pid    | instance_status | database_status | database_role | listen_address   | data_path
-----------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | 114864 | open            | normal          | standby       | 192.168.1.5:1688 | /data/yashan/yasdb_data/db-1-1
----------+-----------+--------+--------+-----------------+-----------------+---------------+------------------+--------------------
 host0002 | db        | 1-2:2  | 114862 | open            | normal          | standby       | 192.168.1.6:1688 | /data/yashan/yasdb_data/db-1-2
----------+-----------+--------+--------+-----------------+-----------------+---------------+------------------+--------------------
 host0003 | db        | 1-3:3  | 6921   | open            | normal          | primary       | 192.168.1.4:1688 | /data/yashan/yasdb_data/db-1-3
----------+-----------+--------+--------+-----------------+-----------------+---------------+------------------+--------------------

# 关闭TLS加密

# 修改tls.toml文件

修改安装目录和所有部署目录下的/om/集群名称/conf/tls.toml文件,把rpc_tls_enable设为false即可。

rpc_tls_enable = true              # 修改为false

# 重启yasom和yasagent

  1. 在安装了yasom的服务器上重启yasom:
$ yasboot process yasom restart -c yashandb 
  1. 在所有服务器上重启yasagent:
$ yasboot process yasom restart -c yashandb 

# 验证是否关闭成功

查看此命令是否能在数据库正常的下,打印出数据库各个节点的信息。

执行如下命令,打印节点的信息并根据返回结果确认是否成功关闭TLS加密。

  • 场景1:执行命令不报错且成功打印数据库各节点,表示成功关闭TLS加密。
  • 场景2:执行命令不报错但部分数据库节点信息未正常打印,需排查该节点运行状态是否正常,再检查该节点所在服务器是否正确关闭TLS加密。
  • 场景3:执行命令报x.509等错误,可能在证书配置上存在错误,请检查所有修改过的tls.toml文件中,rpc.key私钥文件和rpc.crt公钥证书文件的路径是否正确。
$ yasboot cluster status -c yashandb -d

 hostid   | node_type | nodeid | pid    | instance_status | database_status | database_role | listen_address   | data_path
-----------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | 114864 | open            | normal          | standby       | 192.168.1.5:1688 | /data/yashan/yasdb_data/db-1-1
----------+-----------+--------+--------+-----------------+-----------------+---------------+------------------+--------------------
 host0002 | db        | 1-2:2  | 114862 | open            | normal          | standby       | 192.168.1.6:1688 | /data/yashan/yasdb_data/db-1-2
----------+-----------+--------+--------+-----------------+-----------------+---------------+------------------+--------------------
 host0003 | db        | 1-3:3  | 6921   | open            | normal          | primary       | 192.168.1.4:1688 | /data/yashan/yasdb_data/db-1-3
----------+-----------+--------+--------+-----------------+-----------------+---------------+------------------+--------------------