# SSL 安全连接

URL: https://caijiao.org/mariadb/security/hardening/ssl
Source: docs/mariadb/security/hardening/ssl.md
Description: 本节介绍如何在 MariaDB 中配置 SSL 安全连接，保障客户端与服务器之间的数据传输加密，防止中间人攻击和数据泄露。

## 1. 什么是 SSL 连接

SSL（Secure Sockets Layer）用于加密客户端和 MariaDB 服务器之间的通信，确保数据在传输过程中不被窃取或篡改。

## 2. 生成 SSL 证书

通常需要创建以下证书文件：

- CA 证书（ca.pem）
- 服务器证书（server-cert.pem）
- 服务器密钥（server-key.pem）
- 客户端证书（client-cert.pem）
- 客户端密钥（client-key.pem）

可以使用 OpenSSL 工具生成。

## 3. 配置 MariaDB 使用 SSL

在 `my.cnf`（或 `mariadb.cnf`）配置文件中添加：

```ini
[mysqld]
ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
````

重启 MariaDB 服务使配置生效。

## 4. 配置用户使用 SSL

为用户设置必须使用 SSL 连接：

```sql
CREATE USER 'alice'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
```

或修改已有用户：

```sql
ALTER USER 'alice'@'%' REQUIRE SSL;
```

## 5. 客户端连接示例

使用 `mysql` 命令行工具：

```bash
mysql --ssl-ca=/path/to/ca.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem -u alice -p -h mariadb_host
```

---

启用 SSL 连接能显著提升数据库通信安全，防止数据被窃听和篡改。
