4.12. 使用自定义 SSL 证书配置卫星服务器

默认情况下,红帽卫星 6 使用自签名 SSL 证书在卫星服务器、外部胶囊服务器和所有主机之间启用加密通信。如果无法使用 Satellite 自签名证书,您可以将卫星服务器配置为使用外部证书颁发机构签名的 SSL 证书。

要使用自定义证书配置 Satellite 服务器,请完成以下步骤:

  1. 第 4.12.1 节 “为 Satellite 服务器创建自定义 SSL 证书”
  2. 第 4.12.2 节 “将自定义 SSL 证书部署到卫星服务器”
  3. 第 4.12.3 节 “将自定义 SSL 证书部署到主机”
  4. 如果您向卫星服务器注册了外部胶囊服务器,则必须使用自定义 SSL 证书配置它们。相同的证书颁发机构必须签署卫星服务器和胶囊服务器的证书。如需更多信息,请参阅安装胶囊服务器中的使用自定义 SSL 证书 配置胶囊服务器

4.12.1. 为 Satellite 服务器创建自定义 SSL 证书

使用此流程为卫星服务器创建自定义 SSL 证书。如果您已经有 Satellite 服务器的自定义 SSL 证书,请跳过此步骤。

当您使用自定义证书配置 Satellite 服务器时,请注意以下注意事项:

  • 您必须对 SSL 证书使用 Privacy-Enhanced mail(PEM)编码。
  • 您不能将相同的证书用于卫星服务器和胶囊服务器。
  • 相同的证书颁发机构必须签署卫星服务器和胶囊服务器的证书。

流程

要创建自定义 SSL 证书,请完成以下步骤:

  1. 要存储所有源证书文件,请创建一个仅可供 root 用户访问的目录。

    # mkdir /root/satellite_cert
  2. 创建为证书签名请求(CSR)签名的私钥。

    请注意,私钥必须未加密的。如果您使用受密码保护的私钥,请删除私钥密码。

    如果您已拥有此卫星服务器的私钥,请跳过这一步。

    # openssl genrsa -out /root/satellite_cert/satellite_cert_key.pem 4096
  3. 为证书签名请求(CSR)创建 /root/satellite_cert/openssl.cnf 配置文件并包含以下内容:

    [ req ]
    req_extensions = v3_req
    distinguished_name = req_distinguished_name
    x509_extensions = usr_cert
    prompt = no
    
    [ req_distinguished_name ] 1
    C  = Country Name (2 letter code)
    ST = State or Province Name (full name)
    L  = Locality Name (eg, city)
    O  = Organization Name (eg, company)
    OU = The division of your organization handling the certificate
    CN = satellite.example.com 2
    
    [ v3_req ]
    basicConstraints = CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    subjectAltName = @alt_names
    
    [ usr_cert ]
    basicConstraints=CA:FALSE
    nsCertType = client, server, email
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    nsComment = "OpenSSL Generated Certificate"
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid,issuer
    
    [ alt_names ]
    DNS.1 = satellite.example.com 3
    1
    [ req_distinguished_name ] 部分,输入您的机构信息。
    2
    将证书的 Common Name CN 设置为与 Satellite 服务器的完全限定域名(FQDN)匹配。要确认该服务器上的 FQDN,请输入 hostname -f 命令。这需要确保 katello-certs-check 命令正确验证证书。
    3
    将 Subject Alternative Name(SAN) DNS.1 设置为与服务器的完全限定域名(FQDN)匹配。
  4. 生成证书签名请求(CSR):

    # openssl req -new \
    -key /root/satellite_cert/satellite_cert_key.pem \ 1
    -config /root/satellite_cert/openssl.cnf \ 2
    -out /root/satellite_cert/satellite_cert_csr.pem 3
    1
    私钥路径。
    2
    配置文件的路径。
    3
    要生成的 CSR 的路径。
  5. 将证书签名请求发送到证书颁发机构。相同的证书颁发机构必须签署卫星服务器和胶囊服务器的证书。

    提交请求时,指定证书的寿命。发送证书请求的方法各不相同,因此请查阅证书颁发机构以获取首选方法。为了响应请求,预计可以在单独的文件中接收证书颁发机构捆绑包和签名证书。