创建证书
创建自签名证书以安装在Redis Enterprise集群上。
当您首次安装Redis Enterprise Software时,会创建自签名证书以启用Redis Enterprise端点的加密。这些证书在一年(365天)后过期,必须进行续期。
您可以通过用新的自签名证书替换这些证书,或者用由证书颁发机构(CA)签名的证书替换它们来续订这些证书。
续订自签名证书
自v6.2.18-70起,Redis Enterprise Software 包含一个用于生成自签名证书的脚本。
默认情况下,generate_self_signed_certs.sh
脚本位于 /opt/redislabs/utils/
。
在这里,您将学习如何使用此脚本生成新证书以及如何安装它们。
步骤1:生成新证书
登录到托管集群主节点的机器,然后运行以下命令:
% sudo -u redislabs /opt/redislabs/utils/generate_self_signed_certs.sh \
-f "<DomainName1 DomainName2>" -d <Days> -t <Type>
其中:
-
<DomainName1> 是集群的完全限定域名(FQDN)。(这是首次创建集群时赋予的名称。)
-
<DomainName2> 是集群的可选完全限定域名(FQDN)。允许多个域名,用空格分隔。整个名称集应使用引号(
""
)括起来。 -
<Days> 是一个整数,指定证书应有效的天数。我们建议不要将此值设置为超过一年(365天)。
<Days> 是可选的,默认为
365
。 -
<Type> 是一个字符串,用于标识要生成的证书的名称。
支持以下值:
值 描述 api
REST API cm
集群管理器 UI metrics
指标导出器 proxy
数据库端点 syncer
同步过程 all
在一次操作中生成所有证书 Type 是可选的,默认为
all
。
当你运行脚本时,它会报告成功("Self signed cert generated successfully"
)或错误信息。使用错误信息来排查任何问题。
以下示例为mycluster.example.com
生成所有自签名证书;这些证书在命令运行后一年过期:
$ sudo -u redislabs /opt/redislabs/utils/generate_self_signed_certs.sh \
-f "mycluster.example.com"`
假设您想创建一个集群管理器UI证书,以支持两个集群,为期两年。以下示例展示了如何操作:
$ sudo -u redislabs /opt/redislabs/utils/generate_self_signed_certs.sh \
-f "mycluster.example.com anothercluster.example.com" -d 730 -t cm
在这里,生成了一个证书文件和证书密钥以支持以下域名:
mycluster.example.com
*.mycluster.example.com
anothercluster.example.com
*.anothercluster.example.com
步骤2:找到新的证书文件
成功时,脚本会为每个生成的证书生成两个.PEM文件:一个证书文件和一个证书密钥,每个文件都以生成的证书类型命名(参见前面的表格以获取各个证书的名称)。
这些文件可以在/tmp
目录中找到。
$ ls -la /tmp/*.pem
步骤3:设置权限
我们建议设置新证书文件的权限,以限制文件所有者的读写访问,并设置组和其他用户的权限为只读访问。
$ sudo chmod 644 /tmp/*.pem
步骤4:替换现有证书
你可以使用rladmin
来用新证书替换现有的证书:
$ rladmin cluster certificate set <CertName> certificate_file \
<CertFilename>.pem key_file <KeyFilename>.pem
以下值支持 <CertName> 参数:
值 | 描述 |
---|---|
api |
REST API |
cm |
集群管理器用户界面 |
metrics_exporter |
指标导出器 |
proxy |
数据库端点 |
syncer |
同步过程 |
你也可以使用REST API。要了解更多信息,请参阅更新证书。
创建CA签名的证书
您可以使用由证书颁发机构 (CA) 签名的证书。
为了获得最佳效果,请使用以下指南创建证书。
TLS证书指南
当您创建由证书颁发机构签名的证书时,您需要创建服务器证书和客户端证书。以下提供了适用于这两种证书的指南以及每种证书类型的指导。
服务器和客户端证书的指南
-
在创建服务器或客户端证书的.PEM文件时,请包含完整的证书链。
-
列出(链)证书在.PEM文件中的顺序如下:
-----BEGIN CERTIFICATE----- Domain (leaf) certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Intermediate CA certificate -----END CERTIFICATE---- -----BEGIN CERTIFICATE----- Trusted Root CA certificate -----END CERTIFICATE-----
服务器证书指南
服务器证书支持集群。
除了前面描述的一般指导原则外,以下指导原则适用于服务器证书:
-
使用集群的完全限定域名(FQDN)作为证书的通用名称(CN)。
-
根据您的安全团队或证书颁发机构指定的值设置以下值:
- 国家名称 (C)
- 州或省名称 (ST)
- 地区名称 (L)
- 组织名称 (O)
- 组织单位 (OU)
-
Subject Alternative Name (SAN) 应根据 FQDN 包含以下值:
dns=<cluster-fqdn> dns=*.<cluster-fqdn> dns=internal.<cluster-fqdn> dns=*.internal.<cluster-fqdn>
-
扩展密钥使用属性应设置为
TLS Web Client Authentication
和TLS Web Server Authentication
。 -
我们强烈建议使用强哈希算法,例如
SHA-256 或SHA-512 。个别操作系统可能会限制对特定算法的访问。例如,Ubuntu 20.04 限制访问到
SHA-1 。在这种情况下,Redis Enterprise Software 仅限于底层操作系统支持的功能。
客户端证书指南
客户端证书支持数据库连接。
除了前面描述的一般指导原则外,以下指导原则适用于客户端证书:
-
扩展密钥使用属性应设置为
TLS Web Client Authentication
。 -
我们强烈建议使用强哈希算法,例如
SHA-256 或SHA-512 。个别操作系统可能会限制对特定算法的访问。例如,Ubuntu 20.04 限制访问到
SHA-1 。在这种情况下,Redis Enterprise Software 仅限于底层操作系统支持的功能。
创建证书
创建CA签名证书的实际过程因CA而异。此外,您的安全团队可能有您需要遵循的自定义指令。
在这里,我们使用OpenSSL演示一般过程。如果您的CA提供了替代工具,您应该根据他们的说明使用这些工具。
无论您选择如何创建证书,请确保遵循前面描述的指导原则。
-
创建一个私钥。
$ openssl genrsa -out <key-file-name>.pem 2048
-
创建一个证书签名请求。
$ openssl req -new -key <key-file-name>.pem -out \ <key-file-name>.csr -config <csr-config-file>.cnf
重要提示: .CNF 文件是一个配置文件。请咨询您的安全团队或证书颁发机构,以获取帮助为您的环境创建有效的配置文件。
-
使用您的证书颁发机构对私钥进行签名。
$ openssl x509 -req -in <key-file-name>.csr -signkey <key-file-name>.pem -out <cert-name>.pem
签名过程因每个组织和CA供应商而异。请咨询您的安全团队和证书颁发机构,以获取描述如何签名证书的具体说明。
-
将证书上传到您的集群。
你可以使用
rladmin
来用新证书替换现有证书:$ rladmin cluster certificate set <cert-name> certificate_file \ <cert-name>.pem key_file <key-file-name>.pem
有关
<cert-name>
参数支持的值列表,请参见前面的表格。你也可以使用REST API。要了解更多信息,请参阅更新证书。