创建证书

创建自签名证书以安装在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证书指南

当您创建由证书颁发机构签名的证书时,您需要创建服务器证书和客户端证书。以下提供了适用于这两种证书的指南以及每种证书类型的指导。

服务器和客户端证书的指南

  1. 在创建服务器或客户端证书的.PEM文件时,请包含完整的证书链

  2. 列出()证书在.PEM文件中的顺序如下:

    -----BEGIN CERTIFICATE-----    
    Domain (leaf) certificate
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    Intermediate CA certificate
    -----END CERTIFICATE----
    -----BEGIN CERTIFICATE-----
    Trusted Root CA certificate
    -----END CERTIFICATE-----
    

服务器证书指南

服务器证书支持集群。

除了前面描述的一般指导原则外,以下指导原则适用于服务器证书:

  1. 使用集群的完全限定域名(FQDN)作为证书的通用名称(CN)。

  2. 根据您的安全团队或证书颁发机构指定的值设置以下值:

    • 国家名称 (C)
    • 州或省名称 (ST)
    • 地区名称 (L)
    • 组织名称 (O)
    • 组织单位 (OU)
  3. Subject Alternative Name (SAN) 应根据 FQDN 包含以下值:

    dns=<cluster-fqdn>
    dns=*.<cluster-fqdn>
    dns=internal.<cluster-fqdn>
    dns=*.internal.<cluster-fqdn>
    
  4. 扩展密钥使用属性应设置为TLS Web Client AuthenticationTLS Web Server Authentication

  5. 我们强烈建议使用强哈希算法,例如SHA-256SHA-512

    个别操作系统可能会限制对特定算法的访问。例如,Ubuntu 20.04 限制访问SHA-1。在这种情况下,Redis Enterprise Software 仅限于底层操作系统支持的功能。

客户端证书指南

客户端证书支持数据库连接。

除了前面描述的一般指导原则外,以下指导原则适用于客户端证书:

  1. 扩展密钥使用属性应设置为TLS Web Client Authentication

  2. 我们强烈建议使用强哈希算法,例如SHA-256SHA-512

    个别操作系统可能会限制对特定算法的访问。例如,Ubuntu 20.04 限制访问SHA-1。在这种情况下,Redis Enterprise Software 仅限于底层操作系统支持的功能。

创建证书

创建CA签名证书的实际过程因CA而异。此外,您的安全团队可能有您需要遵循的自定义指令。

在这里,我们使用OpenSSL演示一般过程。如果您的CA提供了替代工具,您应该根据他们的说明使用这些工具。

无论您选择如何创建证书,请确保遵循前面描述的指导原则。

  1. 创建一个私钥。

    $ openssl genrsa -out <key-file-name>.pem 2048
    
  2. 创建一个证书签名请求。

    $ openssl req -new -key <key-file-name>.pem -out \
       <key-file-name>.csr -config <csr-config-file>.cnf
    

    重要提示: .CNF 文件是一个配置文件。请咨询您的安全团队或证书颁发机构,以获取帮助为您的环境创建有效的配置文件。

  3. 使用您的证书颁发机构对私钥进行签名。

    $ openssl x509 -req -in <key-file-name>.csr -signkey <key-file-name>.pem -out <cert-name>.pem
    

    签名过程因每个组织和CA供应商而异。请咨询您的安全团队和证书颁发机构,以获取描述如何签名证书的具体说明。

  4. 将证书上传到您的集群。

    你可以使用rladmin来用新证书替换现有证书:

    $ rladmin cluster certificate set <cert-name> certificate_file \
       <cert-name>.pem key_file <key-file-name>.pem
    

    有关<cert-name>参数支持的值列表,请参见前面的表格

    你也可以使用REST API。要了解更多信息,请参阅更新证书

RATE THIS PAGE
Back to top ↑