创建和导入证书颁发机构 (CA) 签名的证书为 SSL 通信提供最高级别的信任,并有助于保护云中的连接。
每个 VMware Cloud Director 服务器都必须支持两个不同的 SSL 端点,一个用于 HTTPS 通信,一个用于控制台代理通信。
在 VMware Cloud Director 设备中,这两个端点共享同一个 IP 地址或主机名,但使用两个不同的端口 - 443
用于 HTTPS 通信,8443
用于控制台代理通信。您可以对这两个端点使用相同的证书,例如,使用通配符证书。
两个端点的证书都必须包含 X.500 标识名和 X.509 主体备用名称扩展。
如果您拥有自己的私钥和 CA 签名证书文件,请按照将私钥和 CA 签名的 SSL 证书导入到 VMware Cloud Director 设备中所述的过程操作。
重要说明: 部署后,
VMware Cloud Director 设备会生成密钥大小为 2048 位的自签名证书。必须先评估安装的安全要求,然后再选择适当的密钥大小。根据 NIST 特殊出版物 800-131A,不再支持小于 1024 位的密钥大小。
在此过程中使用的私钥密码是 root 用户密码,表示为 root_password 形式。
过程
- 以 root 身份直接或通过 SSH 客户端登录到 VMware Cloud Director 设备控制台。
- 根据您的环境需求,选择以下选项之一。
部署
VMware Cloud Director 设备时,
VMware Cloud Director 会自动为 HTTPS 服务和控制台代理服务生成密钥大小为 2048 位的自签名证书。
- 如果您希望证书颁发机构对部署时生成的证书进行签名,请跳至步骤 5。
- 如果要使用自定义选项(如更大的密钥大小)生成新证书,请继续执行步骤 3。
- 运行以下命令以备份现有的证书文件。
cp /opt/vmware/vcloud-director/etc/user.http.pem /opt/vmware/vcloud-director/etc/user.http.pem.original
cp /opt/vmware/vcloud-director/etc/user.http.key /opt/vmware/vcloud-director/etc/user.http.key.original
cp /opt/vmware/vcloud-director/etc/user.consoleproxy.pem /opt/vmware/vcloud-director/etc/user.consoleproxy.pem.original
cp /opt/vmware/vcloud-director/etc/user.consoleproxy.key /opt/vmware/vcloud-director/etc/user.consoleproxy.key.original
- 运行以下命令,为 HTTPS 服务和控制台代理服务创建公钥和私钥密钥对。
/opt/vmware/vcloud-director/bin/cell-management-tool generate-certs --cert /opt/vmware/vcloud-director/etc/user.http.pem --key /opt/vmware/vcloud-director/etc/user.http.key --key-password root-password
/opt/vmware/vcloud-director/bin/cell-management-tool generate-certs --cert /opt/vmware/vcloud-director/etc/user.consoleproxy.pem --key /opt/vmware/vcloud-director/etc/user.consoleproxy.key --key-password root-password
命令使用默认值创建或覆盖证书文件,然后使用指定的密码创建或覆盖私钥文件。根据环境的 DNS 配置,颁发者公用名称 (CN) 设置为每个服务的 IP 地址或 FQDN。证书使用默认的 2048 位密钥长度,并在创建 1 年后过期。
重要说明: 由于
VMware Cloud Director 设备中的配置限制,您必须将
/opt/vmware/vcloud-director/etc/user.http.pem 和
/opt/vmware/vcloud-director/etc/user.http.key 位置用于 HTTPS 证书文件并将
/opt/vmware/vcloud-director/etc/user.consoleproxy.pem 和
/opt/vmware/vcloud-director/etc/user.consoleproxy.key 位置用于控制台代理证书文件。
注: 您可以使用设备的
root 密码作为密钥密码。
- 为 HTTPS 服务和控制台代理服务创建证书签名请求 (CSR)。
重要说明:
VMware Cloud Director 设备对 HTTPS 服务和控制台代理服务共享相同的 IP 地址和主机名。因此,CSR 创建命令必须为主体备用名称 (SAN) 扩展参数使用相同的 DNS 和 IP。
- 在 http.csr 文件中创建证书签名请求。
openssl req -new -key /opt/vmware/vcloud-director/etc/user.http.key -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:vcd2.example.com,DNS:vcd2,IP:10.100.101.10\n")) -out http.csr
- 在 consoleproxy.csr 文件中创建证书签名请求。
openssl req -new -key /opt/vmware/vcloud-director/etc/user.consoleproxy.key -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:vcd2.example.com,DNS:vcd2,IP:10.100.101.10\n")) -out consoleproxy.csr
- 将证书签名请求发送给证书颁发机构。
如果您的证书颁发机构要求您指定 Web 服务器类型,则使用 Jakarta Tomcat。
您将获取 CA 签名证书。
- 将 CA 签名证书、CA 根证书和任何中间证书复制到 VMware Cloud Director 设备,然后运行命令以覆盖现有证书。
- 运行以下命令以使用 CA 签名的版本覆盖设备上的现有
user.http.pem
证书。
cp ca-signed-http.pem /opt/vmware/vcloud-director/etc/user.http.pem
- 运行以下命令以使用 CA 签名的版本覆盖设备上的现有
user.consoleproxy.pem
。
cp ca-signed-consoleproxy.pem /opt/vmware/vcloud-director/etc/user.consoleproxy.pem
- 运行命令,将根 CA 签名证书和任何中间证书附加到 HTTP 证书和控制台代理证书。
cat intermediate-certificate-file-1.cer intermediate-certificate-file-2.cer root-CA-certificate.cer >> /opt/vmware/vcloud-director/etc/user.http.pem
cat intermediate-certificate-file-1.cer intermediate-certificate-file-2.cer root-CA-certificate.cer >> /opt/vmware/vcloud-director/etc/user.consoleproxy.pem
- 运行命令以将证书导入到 VMware Cloud Director 实例中。
/opt/vmware/vcloud-director/bin/cell-management-tool certificates -j --cert /opt/vmware/vcloud-director/etc/user.http.pem --key /opt/vmware/vcloud-director/etc/user.http.key --key-password root_password
/opt/vmware/vcloud-director/bin/cell-management-tool certificates -p --cert /opt/vmware/vcloud-director/etc/user.consoleproxy.pem --key /opt/vmware/vcloud-director/etc/user.consoleproxy.key --key-password root_password
- 要使新签名证书生效,请重新启动 VMware Cloud Director 设备上的
vmware-vcd
服务。
- 运行 命令以停止 服务。
/opt/vmware/vcloud-director/bin/cell-management-tool cell -i $(service vmware-vcd pid cell) -s
- 运行 命令以启动 服务。
systemctl start vmware-vcd