PowerStore:如何将自签名群集管理证书替换为外部证书颁发机构颁发的证书
摘要: 本文提供有关如何使用外部证书颁发机构 (CA) 颁发的证书替换 PowerStore 用于管理的自签名证书的分步说明。
说明
提醒:一般而言,PowerStore 不支持第三方 CA 签署 GUI 证书。浏览器论坛禁止 CA 使用证书中的受限 IP 为证书签名,因为专用 IP 包含在受限列表中,并且 PowerStore 要求在证书中,CA 将拒绝该请求。获取第三方 CA 签名的证书的唯一可能性是将 ISP 或 IANA 提供的公共 IP 用于管理网络。
本文指的是由私有企业 CA 签名的证书(例如,使用 OpenSSL、Microsoft CA 或类似内容)
本文介绍 PowerStoreOS 2.1。有关 PowerStore OS 的较新版本,请参阅 PowerStore:创建和导入签名的 HTTPS 管理证书
在 PowerStoreOS 版本 2.1 中,对将 PowerStore 管理自签名证书替换为外部 CA 颁发的证书的初始支持以有限形式提供。
除了使用 HTTPS 保护用户界面 (UI) 访问之外,群集管理证书还有其他用途,例如各种内部通信等。
在首次引入 PowerStoreOS 2.1 版随附的功能期间,以下限制适用。
这些限制和局限性适用于 PowerStoreOS 版本 2.1.x,用于私有 CA 签名的服务器证书导入。这些限制和局限性不适用于 PowerStoreOS 版本 3.0 或更高版本。
- 以下项不支持第三方证书导入
- 多设备群集
- 与另一个群集处于复制关系的群集
- 配置了 SDNAS 的群集
- 统一系统(文件 + 数据块)
- 为群集导入第三方证书后,不支持恢复到原始 PowerStore CA 签名证书。
- 不会为证书过期生成警报。
- 要导入的证书的有效期应至少为 30 天或更长。
- 不支持使用 PowerStore Manager UI 导入第三方证书。
- 仅管理流量 (Management_HTTP) 支持第三方证书导入,而不支持任何其他服务(如 VASA、复制等)。
重要提示:如果运行 PowerStoreOS 2.1,请全面查看并了解这些限制。如果您的系统属于上面列出的类别之一,请不要继续。
如何使用 PowerStore Manager 用户界面导入外部证书颁发机构颁发的证书
只有运行 PowerStoreOS 版本 2.1 的系统才需要手动 CLI 过程。
对于运行 PowerStoreOS v3 及更高版本的系统,请使用 PowerStore Manager 用户界面导入证书。
有关更多详细信息,请参阅《PowerStore 安全配置指南》。
PowerStore Manager Web UI 签名的群集证书窗口:
如何使用 CLI 导入外部证书颁发机构颁发的证书
步骤 1 — 检索群集 IPv4/IPv6 地址
第一步是检索群集 IPv4/IPv6(管理)地址。此 IP 嵌入在当前自签名管理证书中。这也是您在浏览器中键入以连接到 PowerStore Manager 用户界面的相同 IP 地址。
步骤 1a
检索所有证书的列表。
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate show
# | id | type | service | is_current | is_valid
----+--------------------------------------+--------+------------------+------------+----------
1 | 00907634-b4eb-446a-a381-aae685bae066 | Server | Management_HTTP | yes | yes
2 | 9d0ec275-3688-4ae2-922b-639e1cfb0b88 | Server | VASA_HTTP | yes | yes
3 | c5f03cf7-fe1d-40bd-b6fb-7abba0c6026a | Client | Replication_HTTP | yes | yes
<trimmed for brevity>
记下具有服务Management_HTTP和类型服务器的证书的 id字段。
步骤 1b
获取当前自签名管理证书的完整详细信息。
运行以下命令,将 id替换为您在步骤 1a 中检索到的值。
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate -id 00907634-b4eb-446a-a381-aae685bae066 show
id = 00907634-b4eb-446a-a381-aae685bae066
type = Server
type_l10n = Server
service = Management_HTTP
service_l10n = Management_HTTP
is_current = yes
is_valid = yes
members:
subject = CN=Dell EMC PowerStore CA E79NFK8T,O=Dell EMC,ST=MA,C=US
serial_number = 14daac34e1db4711
signature_algorithm = SHA384withRSA
issuer = CN=Dell EMC PowerStore CA E79NFK8T,O=Dell EMC,ST=MA,C=US
valid_from = 11/16/21 23:16:33
valid_to = 10/30/89 23:16:33
public_key_algorithm = RSA
key_length = 4096
thumbprint_algorithm = SHA-256
thumbprint_algorithm_l10n = SHA-256
thumbprint = 279ea39ad7b8d2e0f3695a850a7d302e8318e080e1092fccb314c8f4f19e50a4
certificate = MIIFdDCCA1ygAwIBAgIIFNqsNOHbRxEwDQYJKoZIhvcNAQEMBQAwVzELMAkGA1UEBhMCVVMxCzAJBg
<trimmed for brevity>
Ar4eTY0aBe7R8fnSbg97EFqF+1gGhKlxrOU9AICgZJDh0PDQJRcYLFJBi36Ktt++mtRgpSig8VvypZ
depth = 2
subject_alternative_names =
subject = C=US+O=Dell+L=Hopkinton+OU=PowerStore+ST=Massachusetts+CN=ManagementHTTP.xxxxxxxxxxxx
serial_number = xxxxxxxxxxxxx
signature_algorithm = SHA256withRSA
issuer = CN=Dell EMC PowerStore CA E79NFK8T,O=Dell EMC,ST=MA,C=US
valid_from = 11/16/21 23:56:23
valid_to = 11/15/26 23:56:23
public_key_algorithm = RSA
key_length = 4096
thumbprint_algorithm = SHA-256
thumbprint_algorithm_l10n = SHA-256
thumbprint = eedf2f9c1d0f70f018857110e87cd122f4fa31140e694c30b5ea10398629dbf1
certificate = MIIFejCCA2KgAwIBAgIJANlUDR+8+78qMA0GCSqGSIb3DQEBCwUAMFcxCzAJBgNVBAYTAlVTMQswCQ
<trimmed for brevity>
ZTShTW0BFh3IeAgt23Tlhz+npsJNqbvxXB+8hXqvNWcpzeSluiUalqB3qU9MwCzwHpEkXqagzk8EZM
depth = 1
subject_alternative_names = aaa.bbb.ccc.ddd, 1111:2222:3333:4444:5555:6666:7777:8888
您将在输出中获得两个证书:PowerStore 内部 CA 和由该内部 CA 签名的管理证书。
管理证书具有 “深度 = 1”字段, subject_alternative_names字段填充了 IPv4 和 IPv6 IP 地址。
如果您使用 IPv4 管理群集,则 应在“subject_alternative_names ”字段中看到第一个 IPv4 群集管理 IP(如上面的示例 - aaa.bbb.ccc.ddd 所示)。如果您使用 IPv6 管理群集,请记下 第一个 IPv6 地址。
步骤 2 — 生成证书签名请求 (CSR)
如何生成 CSR,稍后将其提交给证书颁发机构进行签名。
步骤 2a
运行以下命令以生成有关生成 CSR 的帮助并熟悉其语法:
$ pstcli -u admin -p <password> -d <cluster_ip> help x509_certificate csr
x509_certificate csr -type { Server | Client | CA_Client_Validation | CA_Server_Validation } -service { Management_HTTP | Replication_HTTP | VASA_HTTP | Import_HTTP | LDAP_HTTP | Encrypt_HTTP | Syslog_HTTP } -dns_name <value>,...
-ip_addresses <value>,... -key_length <2048..4096> [ -scope <value> ] [ -common_name <value> ] [ -organizational_unit <value> ] [ -organization <value> ] [ -locality <value> ] [ -state <value> ] [ -country <value> ] [ { -passphrase
<value> | -passphraseSecure } ] [ -async ]
<trimmed for brevity>
以上粗体选项是必需的,所有其他选项都是可选的。如果您的公司证书政策要求使用这些可选字段,请咨询您的 CA 或 PKI 管理员。
步骤 2b
使用上述准则生成 CSR。
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate csr -type Server -service Management_HTTP -dns_name "powerstoreXY.mycompany.com" -ip_addresses aaa.bbb.ccc.ddd -key_length 2048 -scope "External" -common_name "powerstoreXY.mycompany.com"
该命令的输出将返回 BASE64 编码的 id 和 CSR。例如:
1 | 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd | Server | Management_HTTP | Management_HTTP | no | no | -----BEGIN CERTIFICATE REQUEST----- MIIDJTCCAg0CAQAwezF5MAkGA1UEBhMCVVMwCwYDVQQKEwREZWxsMBAGA1UEBxMJ <trimmed for brevity> h4t6QVXny+nF25XASq49kuZ8aWA0aTwU8VN5lC0qbSA2Zy6uX8jPmf/ecGNSQzIc 6iDIm76HbL7UKlDecSmr7WiR5hZ9bP/zKxmkNlTN1viqtInGl+zZa6U= -----END CERTIFICATE REQUEST-----
复制您在输出中收到的 ID(上面加粗),因为后续步骤需要用到它。
您还必须设置 CSR 的格式(使用 VIM 或任何文本编辑器,如记事本)。第一行必须是 -----BEGIN CERTIFICATE REQUEST-----,最后一行必须以 -----END CERTIFICATE REQUEST-----结尾。任何地方都不得有前导空格或结束空格。
格式化 CSR 的示例:
-----BEGIN CERTIFICATE REQUEST----- MIIDJTCCAg0CAQAwezF5MAkGA1UEBhMCVVMwCwYDVQQKEwREZWxsMBAGA1UEBxMJ SG9wa2ludG9uMBEGA1UECxMKUG93ZXJTdG9yZTAUBgNVBAgTDU1hc3NhY2h1c2V0 <trimmed for brevity> h4t6QVXny+nF25XASq49kuZ8aWA0aTwU8VN5lC0qbSA2Zy6uX8jPmf/ecGNSQzIc 6iDIm76HbL7UKlDecSmr7WiR5hZ9bP/zKxmkNlTN1viqtInGl+zZa6U= -----END CERTIFICATE REQUEST-----
将您的 CSR 保存在具有易于理解的名称的文件中。例如: powerstoreXY.csr
步骤 2c(可选)
如果您确信 CSR 的格式正确,则可以跳过此步骤。
如果要验证其有效性,可以使用 OpenSSL 工具套件来确认它可以读取,以及 CSR 字段中的数据看起来正确。例如,使用步骤 2b 中提供的值,CSR 中的粗体字段应反映:
$ openssl req -in powerstoreXY.csr -noout -text
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, O=Dell, L=Hopkinton, OU=PowerStore, ST=Massachusetts, CN=powerstoreXY.mycompany.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:af:cd:73:7a:d7:71:03:67:d6:f9:46:9f:aa:68:
<trimmed for brevity>
90:c4:68:44:71:bd:d7:64:65:81:36:90:2e:c2:15:
b8:f5
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:powerstoreXY.mycompany.com, IP Address:aaa.bbb.ccc.ddd, IP Address:1111:2222:3333:4444:5555:6666:7777:8888
Signature Algorithm: sha256WithRSAEncryption
15:f6:08:8e:ab:f6:07:91:82:ed:45:f0:d9:4d:8c:f5:c6:e3:
<trimmed for brevity
16:7d:6c:ff:f3:2b:19:a4:36:54:cd:d6:f8:aa:b4:89:c6:97:
ec:d9:6b:a5
如果一切看起来都正确,请转至下一步。
步骤 3 - 将 CSR 提交给私有 CA 进行签名
此步骤因供应商而异。此处的目标是使用供应商建议的过程将您的 CSR 提交给证书颁发机构,以接收编码为 BASE64 的签名证书。
步骤 3a
验证新颁发的证书是否为 BASE64 编码。确保文件以 -----BEGIN CERTIFICATE----- 开头,以 -----END CERTIFICATE----- 结尾,中间包含编码的数据。
$ cat powerstoreXY.cer -----BEGIN CERTIFICATE----- MIIGFjCCA/6gAwIBAgITdAAAAA4SiEpOgIXLggABAAAADjANBgkqhkiG9w0BAQsF <trimmed for brevity> 7NcBrSr0Ach8rC443vrqLSChaTZFt1TtYiSJJT+ZEL2F0/TG9BTXBbHKFTVFXgf9 l9dWpDkH6mq/fhgaMNT/vuMCUtD40fj81DE= -----END CERTIFICATE-----
步骤 3b
确认您收到的证书包含生成 CSR 时请求的属性值,特别是 DNS 和 Subject Alternative Name 中的 IP 地址。根据证书颁发机构生成和签署证书所涉及的步骤,证书不一定包含这些值。
$ openssl x509 -in powerstoreXY.cer -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
74:00:00:00:0e:12:88:4a:4e:80:85:cb:82:00:01:00:00:00:0e
Signature Algorithm: sha256WithRSAEncryption
Issuer: DC=com, DC=mycompany, CN=Issuing CA
Validity
Not Before: Nov 26 16:51:16 2021 GMT
Not After : Nov 26 16:51:16 2023 GMT
Subject: C=US, ST=Massachusetts, L=Hopkinton, O=Dell, OU=PowerStore, CN=powerstoreXY.mycompany.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:af:cd:73:7a:d7:71:03:67:d6:f9:46:9f:aa:68:
<trimmed for brevity>
90:c4:68:44:71:bd:d7:64:65:81:36:90:2e:c2:15:
b8:f5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:powerstoreXY.mycompany.com, IP Address:aaa.bbb.ccc.ddd, IP Address:1111:2222:3333:4444:5555:6666:7777:8888
X509v3 Subject Key Identifier:
1C:19:5D:DF:B4:F0:9F:B7:7B:2B:4A:0E:09:B3:C6:43:3E:CF:4D:4C
X509v3 Authority Key Identifier:
keyid:25:D0:D5:01:27:75:BD:08:FF:E7:FF:02:6C:CE:17:46:86:50:DD:71
X509v3 CRL Distribution Points:
Full Name:
URI:http://pki.mycompany.com/pki/Issuing%20CA.crl
Authority Information Access:
CA Issuers - URI:http://pki.mycompany.com/pki/ca-iss.mycompany.com_Issuing%20CA.crt
1.3.6.1.4.1.311.20.2:
...W.e.b.S.e.r.v.e.r
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
Signature Algorithm: sha256WithRSAEncryption
99:d9:99:a7:7a:b9:4a:e8:e3:66:ed:56:1f:6f:bc:71:b8:07:
<trimmed for brevity>
97:d7:56:a4:39:07:ea:6a:bf:7e:18:1a:30:d4:ff:be:e3:02:
52:d0:f8:d1:f8:fc:d4:31
如果您在证书的 X509v3 主题备用名称(上面的粗体)中未看到您在 CSR 中请求的 DNS 和 IP 属性,请咨询您的 CA 管理员以解决此问题。
在确认证书中存在所需属性之前,请勿继续作。
步骤 3c
此步骤涉及在单个 BASE64 编码文件中构建完整的证书链,必须包含您的 PowerStore 证书以及层次结构中参与证书签名的每个 CA 的证书。
使用由以下实体组成的假设公钥基础设施 (PKI):
根 CA > 颁发 CA > 分支
其中
- 根 CA — 是层次结构的顶部,它只为颁发 CA 签名和颁发证书。它通常从不参与为端点签署证书。
- 颁发 CA — 这是通常会向各种端点颁发证书的方法。
- 叶 — 端点,例如工作站、服务器等。您的 PowerStore 系统就属于此类别。
根据 PowerStore 证书的颁发方式,您收到的文件可能仅包含 PowerStore 端点(叶)的单个证书,也可能包含整个链(叶 + 颁发 CA + 根 CA)。在后续步骤中,您不能将仅包含单个叶证书的文件导入 PowerStore。您必须将完整的链(叶 + 颁发 CA + 根 CA)创建为单个 BASE64 编码的 PEM 文件,其中包含所有三个(或更多,如果链中有多个 CA)证书。
如果您还没有,则必须获取颁发 CA 和根 CA 的 BASE64 编码证书,并将它们与 PowerStore 的叶证书合并到一个 PEM 文件中:
$ cat powerstoreXY.cer issuingca.cer rootca.cer > combined.pem
使用文本编辑器打开 combined.pem 文件,并删除任何结束或前导空格和空行。此外,证书的正文(BEGIN/END CERTIFICATE标记之间的数据)必须是单行字符串。
生成的 combined.pem 文件应类似于以下示例:
$ cat combined.pem -----BEGIN CERTIFICATE----- MIIGFjCCA/6gAwIBAgITdAAAAkiG9w0BAQs<trimmed for brevity><PowerStore leaf cert>7NcBrSr0Ach8rC443vrqLSChaTZF0fj81DE= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIGXjCCBEagAwIBDANBgkqhkiG9w0BAQ0F<trimmed for brevity><Issuing CA cert>HU+TePFvwmGruno8fGI4iLyh5kWjnWW2SZVI4wWQ= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFCzCCAvOgAwIyoqhkiG9w0BAQ0FAuDAX<trimmed for brevity><Root CA cert>wRh/EXhVd32yvTxupm288LcH3UU3iGHx0tHieAGEkT0= -----END CERTIFICATE-----
步骤 4 — 导入签名证书链
在最后一步中,通过导入包含新签名证书和所有 CA 的完整链来替换 PowerStore 自签名证书。您需要在步骤 2b 中生成的证书 ID。
如果未记下它,请运行以下命令以再次获取该 ID:
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate show # | id | type | service | is_current | is_valid ----+--------------------------------------+--------+------------------+------------+---------- 1 | 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd | Server | Management_HTTP | no | no 2 | 00907634-b4eb-446a-a381-aae685bae066 | Server | Management_HTTP | yes | yes 3 | c5f03cf7-fe1d-40bd-b6fb-7abba0c6026a | Client | Replication_HTTP | yes | yes 4 | 9d0ec275-3688-4ae2-922b-639e1cfb0b88 | Server | VASA_HTTP | yes | yes
请注意服务 证书Management_HTTP无效且不是最新的。在上面的示例中,id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd 是您需要的那个。
运行以下命令以导入链:
$ pstcli -u admin -p <password> -d <cluster_id> x509_certificate -id <cert_id> set -is_current true -certificate '<contents_of_the_combined.pem_file>'
例如:
pstcli -u admin -d self x509_certificate -id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd set -is_current true -certificate $'-----BEGIN CERTIFICATE-----\n[...Single line PowerStore certificate content...]\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n[...Single line CA Certificate certificate content...] \n-----END CERTIFICATE-----'
或者,在将 Linux 工作站与 PSTCLI 配合使用(例如 PowerStore 上的 SSH)时,您可以告诉 BASH 解释器完全按原样使用 $' ' 之间的任何内容,包括格式。在这种情况下,不需要附加“新行 \n”:
pstcli -u admin -d self x509_certificate -id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd set -is_current true -certificate $'-----BEGIN CERTIFICATE-----
MIIGFjCCA/6gAwIBAgITdAAAAA4SiEpOgIXLggABAAAADjANBgkqhkiG9w0BAQsF<trimmed for brevity><PowerStore leaf cert>7NcBrSr0Ach8rC443vrqLSChaTZFt1TtYiSJJT+ZEL2F0/TG9BTXBbHKFTVFXgf9l9dWpDkH6mq/fhgaMNT/vuMCUtD40fj81DE=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGXjCCBEagAwIBAgITQgAAAARkLTTf7tqFAQAAAAAABDANBgkqhkiG9w0BAQ0F<trimmed for brevity><Issuing CA cert>HU+TePFvwmGruno8o65kK+qWvvYG10PbMbIYxxm/zyofGI4iLyh5kWjnWW2SZVI4wWQ=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFCzCCAvOgAwIBAgIQad6TNg7Pqa5HsuYzLFAK5jANBgkqhkiG9w0BAQ0FADAX<trimmed for brevity><Root CA cert>wRh/EXhVd32yvTxOdBGBBENLQnD6U6HkA4FO/jVbXR2B793giBmi9w85+B7obgWPSTypIgA+LKG3nE0jf5AW5LnOV+gQDCOsSJlGpm288LcH3UU3iGHx0tHieAGEkT0=
-----END CERTIFICATE-----'
此时,新证书应已安装并正常运行。您必须关闭并重新启动浏览器才能看到新证书。使用 PSTCLI 重新连接还会显示证书指纹已更改的警告,这表明新证书已成功安装。