PowerStore: Come sostituire il certificato di gestione del cluster autofirmato con un certificato emesso da una CA esterna
Summary: Questo articolo fornisce istruzioni dettagliate su come sostituire il certificato autofirmato di PowerStore utilizzato per la gestione con un certificato emesso da un autorità di certificazione (CA) esterna. ...
Instructions
Nota: In generale, PowerStore non supporta CA di terze parti che firmano il certificato della GUI. Il forum del browser impedisce alle CA di firmare certificati con IP con restrizioni nel certificato, poiché gli IP privati sono inclusi nell'elenco delle restrizioni e richiesti anche nel certificato da PowerStore, la CA rifiuterà la richiesta. L'unica possibilità per ottenere un certificato firmato da una CA di terze parti consiste nell'utilizzare IP pubblici forniti da un ISP o IANA per la rete di gestione.
Questo articolo fa riferimento a un certificato firmato da una CA aziendale privata (ad esempio, usando OpenSSL, Microsoft CA o qualcosa di simile)
Questo articolo illustra PowerStoreOS 2.1. Per le versioni più recenti del sistema operativo PowerStore , vedere PowerStore: Creazione e importazione di un certificato di gestione HTTPS firmato
Il supporto iniziale per la sostituzione dei certificati autofirmati di PowerStore Management con quelli emessi dalla CA esterna è disponibile in forma limitata in PowerStoreOS versione 2.1.
Oltre a proteggere l'accesso all'interfaccia utente (UI) tramite HTTPS, il certificato di gestione del cluster ha altri usi, come varie comunicazioni interne e così via.
Le seguenti restrizioni si applicano durante l'introduzione iniziale della funzione fornita con PowerStoreOS versione 2.1.
Queste restrizioni e limitazioni si applicano a PowerStoreOS versione 2.1.x per l'importazione di un certificato del server firmato da una CA privata. Queste restrizioni e limitazioni non si applicano a PowerStoreOS versione 3.0 o successive.
- L'importazione di certificati di terze parti non è supportata su
- Un cluster con più appliance
- Un cluster in relazione di replica con un altro cluster
- Cluster con SDNAS configurato
- Un sistema unificato (file + blocco)
- Il ripristino del certificato originale firmato dalla CA di PowerStore non è supportato una volta importato un certificato di terze parti per un cluster.
- Non vengono generati avvisi per la scadenza del certificato.
- Il certificato da importare deve essere valido per almeno 30 giorni.
- L'importazione di certificati di terze parti non è supportata tramite l'interfaccia utente di PowerStore Manager.
- L'importazione di certificati di terze parti è supportata solo per il traffico di gestione ( Management_HTTP ) e non per altri servizi (ad esempio VASA, replica e così via).
Importante: Esaminare e comprendere appieno queste restrizioni se si esegue PowerStoreOS 2.1. NON procedere se il sistema rientra in una delle categorie elencate sopra.
Come importare un certificato emesso da una CA esterna utilizzando l'interfaccia utente di PowerStore Manager
La procedura CLI manuale dovrebbe essere necessaria solo per i sistemi che eseguono PowerStoreOS versione 2.1.
Per i sistemi che eseguono PowerStoreOS v3 e versioni successive, utilizzare l'interfaccia utente di PowerStore Manager per importare il certificato.
Per ulteriori informazioni, consultare la Guida alla configurazione della sicurezza di PowerStore.
Finestra PowerStore Manager Web UI Signed Cluster Certificate:
Come importare un certificato emesso da un'autorità di certificazione esterna utilizzando la CLI
Passaggio 1: recuperare l'indirizzo IPv4/IPv6 del cluster
Il primo passaggio consiste nel recuperare l'indirizzo IPv4/IPv6 (gestione) del cluster. Questo IP è integrato nel certificato di gestione autofirmato corrente. Questo è anche lo stesso indirizzo IP digitato nel browser per connettersi all'interfaccia utente di PowerStore Manager.
Passaggio 1a
recuperare l'elenco di tutti i certificati.
$ 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>
Prendere nota del campo id del certificato con il Management_HTTP di servizio e il tipo Server.
Passaggio 1b
Ottenere i dettagli completi del certificato di gestione autofirmato corrente.
Eseguire il comando riportato di seguito, sostituendo id con il valore recuperato nel passaggio 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
Nell'output vengono visualizzati due certificati: la CA interna di PowerStore e il certificato di gestione firmato da tale CA interna.
Il certificato di gestione dispone del campo depth = 1 e il campo subject_alternative_names viene popolato con gli indirizzi IP IPv4 e IPv6.
Se si utilizza IPv4 per gestire il cluster, l'IP di gestione del cluster IPv4 dovrebbe essere visualizzato come il primo nel campo subject_alternative_names (come nell'esempio precedente: aaa.bbb.ccc.ddd). Se si utilizza IPv6 per gestire il cluster, annotare il primo indirizzo IPv6.
Passaggio 2: generazione della richiesta di firma del certificato
Come generare una CSR che viene successivamente trasferita a un autorità di certificazione per la firma.
Passaggio 2a
Eseguire il comando seguente per generare la guida per la generazione della CSR e acquisire familiarità con la relativa sintassi:
$ 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>
Le opzioni in grassetto sopra riportate sono obbligatorie, tutte le altre sono facoltative. Rivolgersi all'amministratore della CA o della PKI se la policy dei certificati aziendali richiede l'utilizzo di uno di questi campi facoltativi.
Passaggio 2b
Generare un CSR utilizzando le linee guida riportate sopra.
$ 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"
L'output del comando restituisce un ID e la CSR con codifica BASE64. Ad esempio:
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-----
Copiare l'ID ricevuto nell'output (in grassetto sopra), in quanto necessario per i passaggi successivi.
È inoltre necessario formattare la CSR (utilizzando VIM o qualsiasi editor di testo come Blocco note). La prima riga deve essere -----BEGIN CERTIFICATE REQUEST----- mentre l'ultima riga deve terminare con -----END CERTIFICATE REQUEST-----. Non ci devono essere spazi di inizio o fine da nessuna parte.
Esempio di CSR formattata:
-----BEGIN CERTIFICATE REQUEST----- MIIDJTCCAg0CAQAwezF5MAkGA1UEBhMCVVMwCwYDVQQKEwREZWxsMBAGA1UEBxMJ SG9wa2ludG9uMBEGA1UECxMKUG93ZXJTdG9yZTAUBgNVBAgTDU1hc3NhY2h1c2V0 <trimmed for brevity> h4t6QVXny+nF25XASq49kuZ8aWA0aTwU8VN5lC0qbSA2Zy6uX8jPmf/ecGNSQzIc 6iDIm76HbL7UKlDecSmr7WiR5hZ9bP/zKxmkNlTN1viqtInGl+zZa6U= -----END CERTIFICATE REQUEST-----
Salvare la richiesta di firma del certificato in un file con un nome descrittivo. Ad esempio: powerstoreXY.csr
Passaggio 2c (opzionale)
Se si è certi che la CSR sia formattata correttamente, è possibile ignorare questo passaggio.
Se si desidera verificarne la validità, è possibile utilizzare la suite di strumenti OpenSSL per confermare che sia leggibile e che i dati all'interno dei campi della CSR siano corretti. Ad esempio, utilizzando i valori forniti nel passaggio 2b, i campi in grassetto nella CSR devono riflettere quanto segue:
$ 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
Se tutto è corretto, andare al passaggio successivo.
Passaggio 3 - Invio della CSR a una CA privata per la firma
Questo passaggio varia da vendor a vendor. L'obiettivo è inviare la CSR alla CA emittente utilizzando le procedure consigliate dal fornitore per ricevere un certificato firmato codificato come BASE64.
Passaggio 3a
verificare che il certificato appena emesso sia con codifica BASE64. Assicurarsi che il file inizi con -----BEGIN CERTIFICATE----- e termini con -----END CERTIFICATE----- e contenga dati codificati.
$ cat powerstoreXY.cer -----BEGIN CERTIFICATE----- MIIGFjCCA/6gAwIBAgITdAAAAA4SiEpOgIXLggABAAAADjANBgkqhkiG9w0BAQsF <trimmed for brevity> 7NcBrSr0Ach8rC443vrqLSChaTZFt1TtYiSJJT+ZEL2F0/TG9BTXBbHKFTVFXgf9 l9dWpDkH6mq/fhgaMNT/vuMCUtD40fj81DE= -----END CERTIFICATE-----
Passaggio 3b
Verificare che il certificato ricevuto contenga i valori per gli attributi richiesti al momento della generazione della CSR, in particolare DNS, e gli indirizzi IP in Subject Alternative Name. A seconda delle procedure coinvolte nella produzione e nella firma del certificato da parte della CA, il certificato potrebbe contenerle o meno.
$ 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
Se non vengono visualizzati gli attributi DNS e IP richiesti nella CSR nel nome alternativo del soggetto X509v3 del certificato (esempio in grassetto sopra), consultare l'amministratore CA per risolvere il problema.
NON procedere oltre fino a quando non si conferma che gli attributi richiesti sono presenti nel certificato.
Passaggio 3c
questo passaggio prevede la creazione di una catena di certificati completa in un singolo file con codifica BASE64, che deve contenere il certificato PowerStore e i certificati per ogni CA all'interno della gerarchia coinvolta nella firma del certificato.
Utilizzo di una Public Key Infrastructure (PKI) costituita dalle seguenti entità:
CA radice > che emette CA > foglia
Dove
- CA radice : è la parte superiore della gerarchia e firma ed emette solo i certificati per le CA emittenti. In genere non è mai coinvolto nella firma dei certificati per gli endpoint.
- Emissione di CA : è ciò che in genere rilascia certificati a vari endpoint.
- Foglia : gli endpoint, ad esempio workstation, server e così via. Il sistema PowerStore rientra in questa categoria.
A seconda della modalità di emissione del certificato PowerStore, il file ricevuto potrebbe contenere un solo certificato per l'endpoint PowerStore (leaf) o l'intera catena (leaf + issuingCA + rootCA). Nei passaggi successivi non è possibile importare un file contenente un solo certificato foglia in PowerStore. È necessario creare una catena completa (leaf + issuingCA + rootCA) come un singolo file PEM con codifica BASE64 contenente tutti e tre i certificati (o più, se si dispone di più CA nella catena).
Se non lo si è già fatto, è necessario ottenere i certificati con codifica BASE64 per la CA emittente e la CA radice e combinarli con il certificato leaf di PowerStore in un unico file PEM:
$ cat powerstoreXY.cer issuingca.cer rootca.cer > combined.pem
Aprire il file combined.pem con un editor di testo e rimuovere eventuali spazi finali o iniziali e righe vuote. Inoltre, il corpo dei certificati (dati tra i tag BEGIN/END CERTIFICATE) deve essere una stringa a riga singola.
Il file combined.pem risultante dovrebbe essere simile all'esempio riportato di seguito:
$ 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-----
Passaggio 4 - Importazione della catena di certificati firmati
In questo passaggio finale, è possibile sostituire il certificato autofirmato PowerStore importando la catena completa, costituita dal nuovo certificato firmato e da tutte le CA. È necessario l'ID certificato prodotto nel passaggio 2b.
Se non è stato annotato, eseguire il seguente comando per ottenere di nuovo l'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
Annotare il certificato di Management_HTTP di servizio che NON è valido e NON è aggiornato. Nell'esempio precedente, id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd è quello di cui hai bisogno.
Eseguire il seguente comando per importare la catena:
$ pstcli -u admin -p <password> -d <cluster_id> x509_certificate -id <cert_id> set -is_current true -certificate '<contents_of_the_combined.pem_file>'
Ad esempio:
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-----'
In alternativa, quando si utilizza una stazione Linux con PSTCLI (come SSH su PowerStore), è possibile dire all'interprete BASH di utilizzare qualsiasi cosa tra $' ' esattamente così com'è, inclusa la formattazione. In questo caso, non è necessario aggiungere la "nuova riga \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-----'
A questo punto, il nuovo certificato dovrebbe essere installato e operativo. È necessario chiudere e riavviare il browser per visualizzare il nuovo certificato. La riconnessione con PSTCLI fornisce anche un avviso che indica che l'identificazione personale del certificato è stata modificata, un'indicazione che il nuovo certificato è stato installato correttamente.