配置SSL加密连接时,除了修改配置文件,为什么还需要生成和部署证书?证书的生成流程是怎样的?
在 GBase 8a 中配置 SSL 加密连接时,除了修改配置文件,还必须生成和部署证书,因为 SSL/TLS 协议的安全基石就是基于证书的非对称加密身份认证机制。没有证书,加密连接就无法建立。
一、为什么必须生成和部署证书?
SSL 加密连接的目标是实现 “安全的双向认证” 和 “加密数据传输”。仅修改配置文件只是“打开了SSL功能开关”,而证书是实现以下三个安全目标的唯一凭证:
- 身份认证(防止中间人攻击):
- 服务器证书:让客户端能够验证它连接的是真正的、可信的数据库服务器,而不是伪造的中间人。
- 客户端证书(可选但推荐):让服务器能够验证连接来自合法的、授权的客户端。
“SSL保护数据的原理可以分为三部分:1)认证用户和服务器,确保数据发送到正确的客户端和服务器;”
- 密钥交换(建立加密通道):
- 证书中包含了公钥。客户端和服务器利用对方的公钥,通过非对称加密算法安全地协商出用于后续数据加密的对称会话密钥。
“通过证书和非对称加密的方式,让客户端可以安全的访问服务端。”
- 完整性校验(防止数据篡改):
- 证书由受信任的证书颁发机构(CA) 签发(在自签场景中,CA就是自己)。通信双方使用CA的公钥验证证书的合法性,从而确保公钥未被篡改。
简单比喻:配置文件是“宣布启用加密通信的法律”,而证书是“用于验证身份和交换密钥的护照和签证”。没有证书,法律无法执行。
二、证书生成与部署的完整流程
整个流程分为三个核心步骤,必须在服务器端完成证书生成,然后将部分文件分发到客户端。
步骤1:生成证书(在服务器端进行)
这是最关键的步骤,需要按顺序生成三类证书文件。文档中以 /usr/local/ssl 目录为例。
1. 生成CA证书(根证书,用于签发和验证其他证书)
# 创建目录
mkdir -p /usr/local/ssl && cd /usr/local/ssl
# 生成CA私钥和自签名根证书(有效期10年)
openssl req -sha1 -new -x509 -nodes -days 3650 -keyout ca-key.pem > ca-cert.pem
# 过程中需要填写国家、组织等信息。2. 生成服务器端证书
# 生成服务器私钥和证书请求文件(CSR)
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
# 将私钥转换为RSA格式(标准格式)
openssl rsa -in server-key.pem -out server-key.pem
# 使用CA证书为服务器请求文件签名,生成服务器证书(有效期2年)
openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem3. 生成客户端证书
# 生成客户端私钥和证书请求文件(CSR)
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem
# 将私钥转换为RSA格式
openssl rsa -in client-key.pem -out client-key.pem
# 使用CA证书为客户端请求文件签名,生成客户端证书(有效期2年)
openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
生成密钥时,A challenge password[]: 部分建议填写复杂密码。
步骤2:服务器端配置与验证
修改配置文件:在
gbase_8a_gcluster.cnf文件的[gbased]段添加SSL路径。ssl-ca=/usr/local/ssl/ca-cert.pem ssl-cert=/usr/local/ssl/server-cert.pem ssl-key=/usr/local/ssl/server-key.pem重启集群:
gcluster_services all restart- 验证配置:登录数据库,执行
SHOW VARIABLES LIKE 'have_%ssl';,若返回YES则表示服务端SSL已成功启用。
步骤3:客户端配置与验证
文件分发:将服务器端生成的
ca-cert.pem、client-cert.pem、client-key.pem三个文件拷贝到客户端机器。修改客户端配置:在客户端安装目录的
gbase_8a_gcluster.cnf文件的[client]段添加SSL路径。ini
ssl-ca=/usr/local/ssl/ca-cert.pem ssl-cert=/usr/local/ssl/client-cert.pem ssl-key=/usr/local/ssl/client-key.pem连接验证:使用
gccli连接时,执行status命令。若输出中包含SSL: Cipher in use is ...,则表示SSL加密连接成功。若为SSL: Not in use,则表示未使用SSL。
三、核心要点总结
| 证书文件 | 生成者 | 用途 | 存放位置 |
|---|---|---|---|
ca-cert.pem | 自建CA | 信任锚点,用于验证服务器/客户端证书 | 服务器、客户端 |
server-cert.pem | CA签发 | 服务器身份证明,内含服务器公钥 | 服务器 |
server-key.pem | 服务器生成 | 服务器私钥,必须严格保密 | 服务器 |
client-cert.pem | CA签发 | 客户端身份证明(双向认证时需) | 客户端 |
client-key.pem | 客户端生成 | 客户端私钥,必须严格保密 | 客户端 |
流程本质:建立了一个微型的“私有PKI体系”。自建的CA证书作为信任根,为服务器和客户端签发证书,从而实现双向认证和加密通信。
因此,生成和部署证书不是可选项,而是启用SSL加密连接的强制性前提。它确保了从客户端到数据库服务器的整个通信链路是身份可信且加密的,满足了数据安全传输的合规要求。
评论
热门帖子
- 12025-12-01浏览数:182077
- 22023-05-09浏览数:24329
- 42023-09-25浏览数:17531
- 52020-05-11浏览数:16573