YugabyteDB TLS加密:服务器证书创建全指南

YugabyteDB TLS加密:服务器证书创建全指南

yugabyte-db yugabyte/yugabyte-db: 是 YugaByte DB 的官方仓库,一个高性能、高可扩展、分布式的 SQL 数据库,支持 PostgreSQL 兼容性。适合对分布式数据库、SQL 数据库和云原生应用的开发者。 yugabyte-db 项目地址: https://gitcode.com/gh_mirrors/yu/yugabyte-db

前言

在分布式数据库系统中,安全通信是确保数据完整性和机密性的关键。YugabyteDB作为一款高性能的分布式SQL数据库,支持通过TLS(传输层安全)协议实现服务器间和客户端到服务器的加密通信。本文将详细介绍如何为YugabyteDB集群创建和配置服务器证书。

准备工作

创建安全数据目录

首先需要创建一个专门用于存储安全相关文件的目录:

mkdir secure-data

这个目录将用于存放根证书、私钥等敏感信息。完成配置后,这些数据将被复制到安全位置,原始目录会被删除。

创建节点目录

为集群中的每个节点创建单独的目录:

mkdir 127.0.0.1/ 127.0.0.2/ 127.0.0.3/

这些目录将存放各节点特定的证书和密钥文件,后续会被复制到各节点的tls-cert目录中。

根证书配置

创建根配置文件

secure-data目录中创建ca.conf文件,内容如下:

[ ca ]
default_ca = my_ca

[ my_ca ]
default_days = 3650
serial = secure-data/serial.txt
database = secure-data/index.txt
default_md = sha256
policy = my_policy

[ my_policy ]
organizationName = supplied
commonName = supplied

[req]
prompt=no
distinguished_name = my_distinguished_name
x509_extensions = my_extensions

[ my_distinguished_name ]
organizationName = Yugabyte
commonName = CA for YugabyteDB

[ my_extensions ]
keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,keyCertSign
basicConstraints = critical,CA:true,pathlen:1

初始化必要文件

创建索引文件和序列号文件:

touch secure-data/index.txt
echo '01' > secure-data/serial.txt

生成根证书

生成根私钥

使用以下命令生成2048位的RSA私钥:

openssl genrsa -out secure-data/ca.key

设置适当的权限:

chmod 400 secure-data/ca.key

生成根证书

使用根私钥生成自签名的根证书:

openssl req -new \
            -x509 \
            -days 3650 \
            -config secure-data/ca.conf \
            -key secure-data/ca.key \
            -out secure-data/ca.crt

验证生成的根证书:

openssl x509 -in secure-data/ca.crt -text -noout

节点证书配置

复制根证书到各节点

cp secure-data/ca.crt 127.0.0.1/
cp secure-data/ca.crt 127.0.0.2/
cp secure-data/ca.crt 127.0.0.3/

为每个节点创建配置文件

为每个节点创建node.conf文件,以127.0.0.1节点为例:

[ req ]
prompt=no
distinguished_name = my_distinguished_name

[ my_distinguished_name ]
organizationName = Yugabyte
commonName = 127.0.0.1

[ req_ext ]
subjectAltName = @alt_names
[alt_names]
IP.1 = 127.0.0.1

生成节点私钥

为每个节点生成私钥:

openssl genrsa -out 127.0.0.1/node.127.0.0.1.key
chmod 400 127.0.0.1/node.127.0.0.1.key

注意文件名必须遵循node.<commonName>.key格式,YugabyteDB才能正确识别。

生成节点证书

  1. 首先为每个节点生成证书签名请求(CSR):
openssl req -new \
            -config 127.0.0.1/node.conf \
            -key 127.0.0.1/node.127.0.0.1.key \
            -out 127.0.0.1/node.csr
  1. 使用根证书签署CSR:
openssl ca -config secure-data/ca.conf \
           -keyfile secure-data/ca.key \
           -cert secure-data/ca.crt \
           -policy my_policy \
           -out 127.0.0.1/node.127.0.0.1.crt \
           -outdir 127.0.0.1/ \
           -in 127.0.0.1/node.csr \
           -days 3650 \
           -batch \
           -extfile 127.0.0.1/node.conf \
           -extensions req_ext
  1. 验证节点证书:
openssl verify -CAfile secure-data/ca.crt 127.0.0.1/node.127.0.0.1.crt

部署证书到节点

每个节点需要以下文件:

  1. ca.crt - 根证书
  2. node.<commonName>.crt - 节点证书
  3. node.<commonName>.key - 节点私钥

传输文件到节点

  1. 在目标节点创建证书目录:
ssh <username>@127.0.0.1 mkdir ~/certs
  1. 复制证书文件:
scp 127.0.0.1/ca.crt <user>@127.0.0.1:~/certs/
scp 127.0.0.1/node.127.0.0.1.crt <user>@127.0.0.1:~/certs/
scp 127.0.0.1/node.127.0.0.1.key <user>@127.0.0.1:~/certs/

安全建议

  1. 完成部署后,应安全删除本地临时目录中的敏感文件
  2. 定期轮换证书,建议有效期不超过1年
  3. 严格控制证书和私钥文件的访问权限
  4. 考虑使用硬件安全模块(HSM)保护根私钥

总结

通过上述步骤,我们完成了YugabyteDB集群的服务器证书配置。这些证书将用于启用服务器间的TLS加密通信,为数据库集群提供安全保障。在实际生产环境中,建议结合自动化工具管理证书生命周期,确保证书及时更新,维持系统安全性。

yugabyte-db yugabyte/yugabyte-db: 是 YugaByte DB 的官方仓库,一个高性能、高可扩展、分布式的 SQL 数据库,支持 PostgreSQL 兼容性。适合对分布式数据库、SQL 数据库和云原生应用的开发者。 yugabyte-db 项目地址: https://gitcode.com/gh_mirrors/yu/yugabyte-db

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廉彬冶Miranda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值