PowerStore:如何將自我簽署叢集管理憑證更換為外部認證機構核發的憑證
摘要: 本文提供逐步指示,說明如何將用於管理的 PowerStore 自我簽署憑證更換為外部認證機構 (CA) 核發的憑證。
說明
注意:一般來說,PowerStore 不支援第三方 CA 簽署 GUI 憑證。瀏覽器論壇禁止 CA 簽署憑證中含有受限制 IP 的憑證,由於私人 IP 包含在限制清單中,而且也是 PowerStore 憑證中的需求,CA 會拒絕要求。獲得由第三方 CA 簽名的證書的唯一可能性是使用 ISP 或 IANA 為管理網路提供的公共 IP。
本文是指由私有企業 CA 簽名的證書(例如,使用 OpenSSL、Microsoft CA 或類似內容)
本文涵蓋 PowerStoreOS 2.1。如需較新版本的 PowerStore 作業系統,請參閱 PowerStore:建立與匯入簽署的 HTTPS 管理憑證
PowerStoreOS 2.1 版提供有限形式,以外部 CA 發出的憑證取代 PowerStore Management 自我簽署憑證的初始支援。
除了使用 HTTPS 保護使用者介面 (UI) 存取之外,叢集管理憑證還有其他用途,例如各種內部通訊等。
下列限制適用於 PowerStoreOS 2.1 版隨附的功能初次導入期間。
這些限制和限制適用於私人 CA 簽署伺服器憑證匯入的 PowerStoreOS 2.1.x 版。這些限制和限制不適用於 PowerStoreOS 3.0 版或更新版本。
- 以下項目不支援第三方憑證匯入
- 多應用裝置叢集
- 與另一個叢集有複製關係的叢集
- 已設定 SDNAS 的叢集
- 統一系統 (檔案 + 區塊)
- 匯入叢集的協力廠商憑證後,即不支援回復至原始的 PowerStore CA 簽署憑證。
- 憑證到期時不會產生警示。
- 要匯入的憑證至少應有效 30 天或更久。
- 不支援使用 PowerStore Manager UI 匯入協力廠商憑證。
- 協力廠商憑證匯入僅為管理流量 (Management_HTTP) 提供支援,而不支援任何其他服務 (例如 VASA、複寫等)。
重要:如果執行 PowerStoreOS 2.1,請完整檢閱並瞭解這些限制。如果您的系統屬於上述其中一個類別,請勿繼續。
如何使用 PowerStore Manager 使用者介面匯入外部認證機構核發的憑證
手動 cli 程序僅適用於執行 PowerStoreOS 2.1 版的系統。
若為執行 PowerStoreOS v3 及更新版本的系統,請使用 PowerStore Manager 使用者介面匯入憑證。
如需詳細資訊,請參閱 PowerStore 安全性組態指南。
PowerStore Manager Web UI 簽署的叢集憑證視窗:
如何使用 CLI 匯入外部認證機構頒發的憑證
步驟 1 - 擷取叢集 IPv4/IPv6 位址
第一個步驟是擷取叢集 IPv4/IPv6 (管理) 位址。此 IP 內嵌在目前的自我簽署管理憑證中。這也是您在瀏覽器中輸入的相同 IP 位址,以連線至 PowerStore Manager 使用者介面。
步驟 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 來管理叢集,您應該會看到 IPv4 叢集管理 IP 是 subject_alternative_names 欄位中的第一個 (如以上範例所示 - aaa.bbb.ccc.ddd)。如果您使用 IPv6 來管理叢集,請寫下 第一個 IPv6 位址。
步驟 2 - 產生憑證簽署要求 (CSR)
如何產生 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 (如以上粗體所示),因為後續步驟需要使用該 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 和主體別名中的 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 端點的單一憑證 (葉),也可能包含整個鏈結 (葉 + issuingCA + rootCA)。在後續步驟中,您無法將只包含單一分葉憑證的檔案匯入 PowerStore。必須將完整的鏈(葉 + 頒發 CA + rootCA)創建為一個包含所有三個(或更多,如果鏈中有更多 CA)證書的 BASE64 編碼 PEM 檔。
如果您還沒有,您必須取得核發 CA 和根 CA 的 BASE64 編碼憑證,並將它們與 PowerStore 的分葉憑證合併為一個 PEM 檔案:
$ cat powerstoreXY.cer issuingca.cer rootca.cer > combined.pem
使用文字編輯器開啟 combined.pem 檔案,並移除任何結尾或前置空格及空白行。此外,證書的正文(開始/結束證書標記之間的數據)必須是單行字串。
產生的 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 - 匯入簽署的憑證鏈結
在此最後步驟中,您將匯入完整的鏈結以取代 PowerStore 自我簽署憑證,這些鏈結包含新簽署的憑證和所有 CA。您需要在步驟 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-----'
或者,當使用具有 PSTCLI 的 Linux 工作站時 (例如 PowerStore 上的 SSH),您可以告訴 BASH 解釋器完全按原樣使用 $' ' 之間的任何內容,包括格式。在這種情況下,不需要附加「new行\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 也會警告您憑證指紋已變更,這是已成功安裝新憑證的指示。