# 生成 CA 私钥

openssl genrsa -out redis_ca.key 2048

# 生成自签名的 CA 证书

openssl req -new -x509 -days 365 -key redis_ca.key -out redis_ca.crt -subj "/CN=Redis CA"

```

- redis_ca.key 是 CA 的私钥文件。

- redis_ca.crt 是 CA 的证书文件。

- -subj "/CN=Redis CA" 是 CA 的主体名称,你可以根据需要修改。

### 2. 生成客户端证书和私钥

#### (1) 生成客户端私钥

```bash

openssl genrsa -out redis_client.key 2048

```

#### (2) 生成客户端证书签名请求 (CSR)

```bash

openssl req -new -key redis_client.key -out redis_client.csr -subj "/CN=redis_client"

```

- redis_client.key 是客户端的私钥文件。

- redis_client.csr 是客户端的证书签名请求文件。

- -subj "/CN=redis_client" 是客户端证书的主体名称,你可以根据需要修改。

### 3. 使用 CA 签署客户端证书

```bash

openssl x509 -req -in redis_client.csr -CA redis_ca.crt -CAkey redis_ca.key -CAcreateserial -out redis_client.crt -days 365

```

- redis_client.csr 是客户端的证书签名请求文件。

- redis_ca.crt 是 CA 的证书文件。

- redis_ca.key 是 CA 的私钥文件。

- redis_client.crt 是生成的客户端证书文件。

- -days 365 表示证书有效期为 365 天。

- -CAcreateserial 会创建一个序列号文件(`redis_ca.srl`),用于跟踪签发的证书序列号。

### 4. 验证证书

验证生成的证书是否正确:

```bash

openssl verify -CAfile redis_ca.crt redis_client.crt

```

如果输出类似以下内容,则表示证书验证通过:

```

redis_client.crt: OK

```

### 5. 清理中间文件(可选)

如果你不需要保留中间文件(如 CSR 文件),可以删除它们:

```bash

rm redis_client.csr

```

### 最终文件列表

完成上述步骤后,你将拥有以下文件:

- redis_ca.key:CA 的私钥文件。

- redis_ca.crt:CA 的证书文件。

- redis_client.key:客户端的私钥文件。

- redis_client.crt:客户端的证书文件。

### 注意事项

1. 安全性:CA 私钥文件(`redis_ca.key`)非常重要,必须妥善保管,避免泄露。

2. 文件路径:确保在执行命令时,当前目录是存储这些文件的目录,或者使用绝对路径指定文件位置。

3. 有效期:可以根据需要调整证书的有效期(`-days` 参数)。

通过以上步骤,你可以完整地生成所需的证书和私钥,并为 Redis 配置 TLS。如果还有其他问题,请随时告诉我!