为 SSMC 创建和安装 CA 签名的服务器证书
默认情况下,SSMC 附带提供了自签名证书。考虑到您的企业安全策略和做法,HPE 建议您为 Web 服务器安装自己的 CA 签名证书。因此,SSMC 提供了所需的挂钩和工具,以便为 SSMC Web 服务器生成和安装 CA 签名的证书。
- 与您的企业的 CA 签名机构联系。说明可以为 SSMC 提供
PKCS#10 (RFC 2986)
格式的 CSR(证书签名请求),并且一个或多个相应的 CA 签名证书必须采用符合 X.509 证书标准的 PEM 格式。向他们咨询证书字段所需的内容,例如:Common Name, “CN=”; Organization Unit, “OU=”; Organization, “O=”; Locality or city, “L=”; State, “ST=”; Country, “C=”. Certificate validity in days
在收到 CA 签名的证书后,从公司 CA 网站中下载根和中间 PEM 编码 CA 签名证书。
将根和中间 CA 证书导入到客户端 Web 浏览器中。
如果在启用 FIPS 后创建此密钥存储(不建议),则必须对该密钥存储进行附加修改。请参阅修改 FIPS 的密钥存储条目。
在使用 HPE SSMC 迁移工具从任何以前的 SSMC 版本迁移时,将使用源中的 CA 签名证书覆盖可能在目标设备上安装的证书。Hewlett Packard Enterprise 建议您仅在迁移完成后在目标设备上安装 CA 签名的证书。如果目标设备已安装 CA 签名的证书,则必须在迁移后重新安装 CA 证书。
-
以
ssmcadmin
身份使用任何 SSH 客户端登录到 SSMC 虚拟设备。从 TUI 中输入“x”以退出到 bash Shell。 -
keytool 可执行文件位于
/opt/hpe/ssmc/ssmcbase/fips/jre/bin/
路径中。请将该文件添加到 PATH 环境变量以便于使用。export PATH=/opt/hpe/ssmc/ssmcbase/fips/jre/bin:$PATH
-
重命名 Jetty 密钥存储以进行备份:
cd /opt/hpe/ssmc/ssmcbase/etc/ mv keystore keystore.orig
-
在新的密钥存储中为 SSMC 生成新的公钥和私钥对。
- 执行以下命令并指定证书有效期(以天为单位):
keytool –genkeypair –keystore keystore -storetype JKS –alias jetty – keyalg RSA -validity <validity_days>
注意:某些浏览器版本(Google Chrome 58 和更高版本)要求在服务器证书中包含使用者备用名称 (SAN),这是一个 X.509 扩展。
如果要在服务器证书中使用使用者备用名称 (SAN),请将以下选项添加到 keytool 命令行中。
如果要添加备用名称,请使用
–ext san=dns:servername.example.com
。如果要使用 IP 地址,请使用
–ext san=ip:192.168.10.1
。例如,
keytool -genkeypair –keystore keystore -storetype JKS -alias jetty -keyalg RSA -validity 365 -ext san=dns:servername.example.com
- 在出现“Enter keystore password”提示时,输入用于访问密钥存储内容的密码。记住该密钥存储密码。
- 在出现证书颁发机构所需的证书字段提示时,填写您以前收集的内容,例如 CN、OU、O、L、ST 和 C。
- 下一个提示是检查输入的字段值。如果任何内容不正确,请选择“no”或按 <enter> 以进行响应,从而使用所需的更正内容重复输入字段。
Is CN=…, OU=…, O=…, L=…, ST=…, C=… correct? [no]: yes Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of <validity_days> days for: CN=…, OU=…, O=…, L=…, ST=…, C=…
- 在出现下一个提示时,指定密钥的密码:
Enter key password for <jetty> (RETURN if same as keystore password): [Storing keystore]
牢记该密码并作为
密钥管理器
密码,尤其是它与密钥存储密码不同时。注意:可以安全地忽略 keytool 发出的以下警告消息:
"The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12".
- 执行以下命令并指定证书有效期(以天为单位):
-
为 SSMC 生成 CSR(证书签名请求):
keytool –certreq –keystore keystore –alias jetty –file ~/SSMC_csr.txt
注意: 如果您在步骤 4 中使用-ext
参数指定一个 SAN,则在该步骤中生成 CSR 时使用相同的 SAN。例如:keytool -certreq -keystore keystore -alias jetty -file ~/SSMC_csr.txt -ext san=dns:server.example.com
-
显示 CSR 以验证内容:
cat ~/SSMC_csr.txt
内容如下所示 (PKCS#10, RFC 2986
),并在-----BEGIN NEW CERTIFICATE REQUEST----- 和 -----END NEW CERTIFICATE REQUEST-----
之间包含 PEM 编码的 ASCII 文本。-----BEGIN NEW CERTIFICATE REQUEST----- MIIC+jCCAeICAQAwgYQxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhDb2xvcmFkbzEV MBMGA1UEBxMMRm9ydCBDb2xsaW5zMSMwIQYDVQQKExpIZXdsZXR0IFBhY2thcmQg RW50ZXJwcmlzZTEQMA4GA1UECxMHVW5rbm93bjEUMBIGA1UEAxMLZnNlcnQubG9j . . . jrpTDTeG9xDTjqEDX7IBIdcaksyjuXKEQVuCq/5vBXsQiTyZmMBVNyDqEc8hYHQq JszjVqyNmQ6TEg9TyT+Rvlw663Npfex87pY2AA0pIY2dS5TllyJeIjg/oMB2JrFw ILeYl7/SWC0VIZFo8WerlHb03ihzbQH8HIwSAV4k27uLA8hrkokH4xEyRrWYeg== -----END NEW CERTIFICATE REQUEST-----
-
提交 CSR 文件
~/SSMC_csr.txt
,或者剪切所有文本(包括 BEGIN 和 END 记录)并粘贴到公司 CA 以生成 SSMC CA 签名的证书。 -
客户 CA 为响应该请求而提供的证书必须采用 PEM 编码并符合 X.509 标准。客户 CA 提供的证书可能位于相同或不同的文件中,预期的证书为:
1 个 CA 签名的 SSMC 服务器证书; 1 个 客户 CA 根证书; N 个客户 CA 指定的中间证书 [N>=0]
-
对收到的一个或多个证书文件进行初步检查:
- 其中的每个证书条目必须是 PEM 编码的 ASCII 文本,它包含在
-----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----
之间并符合 X.509 标准。cat <certificate_file_name>
输出如下所示:
-----BEGIN CERTIFICATE----- MIIGoTCCBYmgAwIBAgIQL6hBGubWdXYmFXBoILHAaDANBgkqhkiG9w0BAQUFADCB njEPMA0GA1UEChMGaHAuY29tMRowGAYDVQQLExFJVCBJbmZyYXN0cnVjdHVyZTEL MAkGA1UEBhMCVVMxIDAeBgNVBAoTF0hld2xldHQtUGFja2FyZCBDb21wYW55MUAw . . . Dm6NmvrhHeR8NSbvpDmD/raoCyZZenD0JtiMnuYMF3Vd7DtwEjSZ27BvQbs8skp+ c6LVqo9nbzpnwrHFQIuk1W2saNxu -----END CERTIFICATE-----
注意:如果收到的 PEM 证书文件包含信任链中的所有证书,则可能包含重复的上述内容。
- 执行该命令以查看收到的每个证书文件的证书内容:
keytool -v -printcert -file <certificate_file_name>
- 确保每个使用者证书的颁发者还具有相应的证书,并且可以遍历整个链,直到遍历到自签名的根证书(其中颁发者和使用者相同)。
- 其中的每个证书条目必须是 PEM 编码的 ASCII 文本,它包含在
-
使用 CSR 创建密钥存储的备份副本:
cp -p /opt/hpe/ssmc/ssmcbase/etc/keystore ~/keystore_4csr
-
导入提供的根 CA 证书并将别名指定为
root
:keytool –import –alias root –keystore keystore –file <root_ca_cert_file_name> Enter keystore password: . . . Trust this certificate? [no]: yes Certificate was added to keystore
-
导入 CA 提供的任何中间 CA 证书:
keytool -import -keystore keystore -file <intermediate_ca_cert_file_name>
重复该步骤,直到将证书链中的所有中间证书添加到密钥存储中。
-
将
jetty
作为别名,以将 CA 签名的 SSMC 服务器证书添加到密钥存储中:keytool -import -alias jetty -keystore keystore -file <ssmc_ca_server_cert_file_name>
-
将文件权限和所有权调整为
jetty
密钥存储,如下所示:chmod 640 ./keystore chown ssmcadmin:hpe3parssmcuser ./keystore
-
使用新的密钥存储和密钥密码更新 Jetty 配置,以便 Jetty 可以在绑定到安全服务器端口时访问密钥存储中的证书。
- 备份当前的 Jetty 配置文件。
cp -p jetty-ssl-context.xml /home/ssmcadmin/backup/jetty-ssl-context.xml_orig
- 可选: 如果您的企业安全策略禁止在配置文件中使用明文密码,请按照在配置文件中使用混淆的密码一节中提到的过程为密钥存储密码和密钥管理器密码(如果与密钥存储密码不同)生成混淆的密码。
- 使用
vi
打开并修改 Jetty 配置文件。vi jetty-ssl-context.xml
更新密钥存储密码和密钥管理器密码(根据需要,使用明文或混淆的值进行更新)。混淆的密码必须保留前缀“
OBF
:”。<Set name="KeyStorePassword"><Property name="jetty.sslContext.keyStorePassword" deprecated="jetty.keystore.password" default="OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v"/></Set> <Set name="KeyStoreType"><Property name="jetty.sslContext.keyStoreType" default="JKS"/></Set> <Set name="KeyStoreProvider:><Property name="jetty.sslContext.keyStoreProvider"/></Set> <Set name="KeyManagerPassword"><Property name="jetty.sslContext.keyManagerPassword" deprecated="jetty.keymanagerpassword" default="OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1"/></Set>
- 备份当前的 Jetty 配置文件。
-
使用
config_appliance
命令以返回到 TUI。 - 使用菜单选项 2 以重新启动 SSMC 服务。
- 将对 SSMC 服务器证书签名的 CA 根证书导入到浏览器的受信任 CA 根信任存储中(如果尚未导入)。有关详细信息,请参阅将根和中间 CA 证书导入到客户端 Web 浏览器。
- 使用存储管理员的浏览器,在 URL 中输入 SSMC 的系统 FQDN:https://< SSMC 系统 FQDN>:8443。
- 从浏览器中检查证书。它必须是为 SSMC 新安装的 CA 签名服务器证书。