PowerStore: Cómo reemplazar el certificado de administración de clúster autofirmado por un certificado emitido por una autoridad de certificación externa
Summary: En este artículo, se proporcionan instrucciones paso a paso sobre cómo reemplazar el certificado autofirmado de PowerStore utilizado para la administración por un certificado emitido por una autoridad de certificación (CA) externa. ...
Instructions
Nota: En general, PowerStore no es compatible con CA de terceros que firman el certificado de la GUI. El foro del navegador prohíbe que las CA firmen certificados con direcciones IP restringidas en el certificado, ya que las direcciones IP privadas se incluyen en la lista restringida y también son necesarias en el certificado de PowerStore, la CA rechazará la solicitud. La única posibilidad de obtener un certificado firmado por una CA de terceros sería utilizar direcciones IP públicas proporcionadas por un ISP o IANA para la red de administración.
Este artículo hace referencia a un certificado firmado por una CA de empresa privada (por ejemplo, mediante OpenSSL, Microsoft CA o algo similar)
En este artículo, se aborda PowerStoreOS 2.1. Para obtener las versiones más recientes del sistema operativo PowerStore, consulte PowerStore: Creación e importación de un certificado de administración HTTPS firmado
El soporte inicial para reemplazar los certificados autofirmados de administración de PowerStore por certificados externos emitidos por una CA externa se ofrece de forma limitada en PowerStoreOS versión 2.1.
Además de proteger el acceso a la interfaz de usuario (UI) mediante HTTPS, el certificado de administración del clúster tiene otros usos, como diversas comunicaciones internas, etc.
Las siguientes restricciones se aplican durante la introducción inicial de la función que se proporcionó con PowerStoreOS versión 2.1.
Estas restricciones y limitaciones se aplican a la versión 2.1.x de PowerStoreOS para la importación de un certificado del servidor firmado por una CA privada. Estas restricciones y limitaciones no se aplican a las versiones 3.0 o posteriores de PowerStoreOS.
- La importación de certificados de terceros no es compatible con
- Un clúster de múltiples dispositivos
- Un clúster que está en una relación de replicación con otro clúster
- Clúster que tiene SDNAS configurado
- Un sistema unificado (archivo + bloque)
- La reversión al certificado original firmado por una CA de PowerStore no se admite una vez que se importa un certificado de terceros para un clúster.
- No se generan alertas por el vencimiento del certificado.
- El certificado que se va a importar debe ser válido durante al menos 30 días o más.
- La importación de certificados de terceros no se admite mediante la interfaz de usuario de PowerStore Manager.
- La importación de certificados de terceros solo es compatible con el tráfico de administración (Management_HTTP) y no con otros servicios (como VASA, replicación, etc.).
Importante: Revise y comprenda estas restricciones por completo si ejecuta PowerStoreOS 2.1. NO continúe si el sistema entra en una de las categorías mencionadas anteriormente.
Cómo importar un certificado emitido por una autoridad de certificación externa mediante la interfaz de usuario de PowerStore Manager
El procedimiento manual de la CLI solo debe ser necesario para los sistemas que ejecutan PowerStoreOS versión 2.1.
Para los sistemas que ejecutan PowerStoreOS v3 y versiones posteriores, utilice la interfaz de usuario de PowerStore Manager para importar el certificado.
Para obtener más detalles, consulte la Guía de configuración de seguridad de PowerStore.
Ventana Certificado firmado del clúster de la interfaz de usuario web de PowerStore Manager:
Cómo importar un certificado emitido por una autoridad de certificación externa mediante la CLI
Paso 1: recuperar la dirección IPv4/IPv6 del clúster
El primer paso es recuperar la dirección IPv4/IPv6 (administración) del clúster. Esta IP está incorporada en el certificado de administración autofirmado actual. Esta también es la misma dirección IP que escribiría en el navegador para conectarse a la interfaz de usuario de PowerStore Manager.
Paso 1a
Recupere la lista de todos los certificados.
$ 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>
Tome nota del campo id del certificado con el Management_HTTP de servicio y el tipo Server.
Paso 1b
Obtenga todos los detalles del certificado de administración autofirmado actual.
Ejecute el siguiente comando y reemplace id por el valor que recuperó en el paso 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
Obtendrá dos certificados en el resultado: la CA interna de PowerStore y el certificado de administración firmado por esa CA interna.
El certificado de administración tiene un campo de profundidad = 1 y el campo subject_alternative_names se completa con las direcciones IP IPv4 e IPv6.
Si utiliza IPv4 para administrar el clúster, debe ver la IP de administración del clúster IPv4 como la primera en el campo subject_alternative_names (como en el ejemplo anterior: aaa.bbb.ccc.ddd). Si utiliza IPv6 para administrar el clúster, anote la primera dirección IPv6.
Paso 2: generación de una solicitud de firma de certificado (CSR)
Cómo generar una CSR que luego se lleva a una autoridad de certificación para su firma.
Paso 2a
Ejecute el siguiente comando para producir la ayuda sobre la generación de CSR y familiarizarse con su sintaxis:
$ 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>
Las opciones anteriores en negrita son obligatorias, todas las demás son opcionales. Consulte con el administrador de CA o PKI si la política de certificados de la empresa requiere el uso de cualquiera de estos campos opcionales.
Paso 2b
Genere una CSR siguiendo las pautas anteriores.
$ 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"
El resultado del comando devuelve un ID y la CSR en codificación BASE64. Por ejemplo:
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-----
Copie el ID que recibió en el resultado (negrita arriba), ya que es necesario para los pasos posteriores.
También debe formatear la CSR (mediante VIM o cualquier editor de texto, como el Bloc de notas). La primera línea debe ser -----BEGIN CERTIFICATE REQUEST----- mientras que la última línea debe terminar con -----END CERTIFICATE REQUEST-----. No debe haber espacios iniciales ni finales en ninguna parte.
Un ejemplo de una CSR con formato:
-----BEGIN CERTIFICATE REQUEST----- MIIDJTCCAg0CAQAwezF5MAkGA1UEBhMCVVMwCwYDVQQKEwREZWxsMBAGA1UEBxMJ SG9wa2ludG9uMBEGA1UECxMKUG93ZXJTdG9yZTAUBgNVBAgTDU1hc3NhY2h1c2V0 <trimmed for brevity> h4t6QVXny+nF25XASq49kuZ8aWA0aTwU8VN5lC0qbSA2Zy6uX8jPmf/ecGNSQzIc 6iDIm76HbL7UKlDecSmr7WiR5hZ9bP/zKxmkNlTN1viqtInGl+zZa6U= -----END CERTIFICATE REQUEST-----
Guarde su CSR en un archivo con un nombre significativo. Por ejemplo: powerstoreXY.csr
Paso 2c (opcional)
Si está seguro de que su CSR tiene el formato correcto, puede omitir este paso.
Si desea verificar la validez de la misma, puede utilizar el conjunto de herramientas OpenSSL para confirmar que se puede leer y que los datos dentro de los campos de la CSR se ven correctos. Por ejemplo, con los valores proporcionados en el paso 2b, los campos en negrita en la CSR deben reflejar lo siguiente:
$ 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
Si todo parece correcto, continúe con el siguiente paso.
Paso 3: Envío de la CSR a una CA privada para su firma
Este paso varía según cada proveedor. El objetivo aquí es enviar su CSR a la autoridad de certificación emisora mediante los procedimientos recomendados por el proveedor para recibir un certificado firmado codificado como BASE64.
Paso 3a
Verifique que el certificado recién emitido tenga codificación BASE64. Asegúrese de que el archivo comience con -----BEGIN CERTIFICATE----- y termine con -----END CERTIFICATE----- y que contenga datos codificados en el medio.
$ cat powerstoreXY.cer -----BEGIN CERTIFICATE----- MIIGFjCCA/6gAwIBAgITdAAAAA4SiEpOgIXLggABAAAADjANBgkqhkiG9w0BAQsF <trimmed for brevity> 7NcBrSr0Ach8rC443vrqLSChaTZFt1TtYiSJJT+ZEL2F0/TG9BTXBbHKFTVFXgf9 l9dWpDkH6mq/fhgaMNT/vuMCUtD40fj81DE= -----END CERTIFICATE-----
Paso 3b
Confirme que el certificado que recibió contiene los valores de los atributos que solicitó cuando generó la CSR, específicamente DNS y las direcciones IP en Nombre alternativo del sujeto. Dependiendo de los procedimientos involucrados en la producción y firma del certificado por parte de la Autoridad de Certificación, el certificado puede o no contenerlos.
$ 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
Si no ve los atributos DNS e IP que solicitó en CSR en el nombre alternativo del sujeto X509v3 del certificado (ejemplo en negrita arriba), consulte con su administrador de CA para solucionar este problema.
NO continúe hasta que haya confirmado que los atributos obligatorios están presentes en el certificado.
Paso 3c
Este paso implica la creación de una cadena de certificados completa en un único archivo codificado en BASE64, que debe contener su certificado de PowerStore más certificados de cada CA en la jerarquía involucrada en la firma del certificado.
Uso de una infraestructura de clave pública (PKI) hipotética que consta de las siguientes entidades:
Hoja > de CA emisora de CA > raíz
Dónde
- CA raíz : es la parte superior de la jerarquía y solo firma y emite certificados para las CA emisoras. Por lo general, nunca participa en la firma de certificados para los terminales.
- CA emisora : esto es lo que normalmente emitiría certificados a varios terminales.
- Leaf : los terminales, como estaciones de trabajo, servidores, etc. Su sistema PowerStore entra en esta categoría.
Según la forma en que se emitió el certificado de PowerStore, es posible que el archivo que recibió de vuelta contenga solo un certificado para el terminal de PowerStore (leaf) o puede contener toda la cadena (leaf + issuingCA + rootCA). No puede importar un archivo que contenga solo un certificado de hoja en PowerStore en los próximos pasos. Debe crear una cadena completa (leaf + issuingCA + rootCA) como un único archivo PEM codificado en BASE64 que contenga los tres certificados (o más, si tiene más CA en la cadena).
Si aún no tiene, debe obtener certificados codificados en BASE64 para la CA emisora y la CA raíz, y combinarlos con el certificado de hoja de PowerStore en un solo archivo PEM:
$ cat powerstoreXY.cer issuingca.cer rootca.cer > combined.pem
Abra el archivo .pem combinado con un editor de texto y elimine los espacios finales o iniciales y las líneas en blanco. Además, el cuerpo de los certificados (datos entre las etiquetas BEGIN/END CERTIFICATE) debe ser una cadena de una sola línea.
El archivo combined.pem resultante debe ser similar al siguiente ejemplo:
$ 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-----
Paso 4: Importación de una cadena de certificados firmados
En este paso final, reemplazará el certificado autofirmado de PowerStore mediante la importación de la cadena completa, que consta del nuevo certificado firmado y todas las CA. Necesita el ID de certificado que generó en el paso 2b.
Si no lo anotó, ejecute el siguiente comando para obtener ese identificador nuevamente:
$ 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
Tenga en cuenta que el certificado de servicio Management_HTTP NO es válido y NO está actualizado. En el ejemplo anterior, id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd es el que necesitas.
Ejecute el siguiente comando para importar la cadena:
$ pstcli -u admin -p <password> -d <cluster_id> x509_certificate -id <cert_id> set -is_current true -certificate '<contents_of_the_combined.pem_file>'
Por ejemplo:
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-----'
Alternativamente, cuando se usa una estación linux con PSTCLI (como SSH en PowerStore), puede decirle al intérprete BASH que use cualquier cosa entre $' ' exactamente como está, incluido el formato. En este caso, no es necesario agregar la "nueva línea \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-----'
En este punto, debería tener el nuevo certificado instalado y en funcionamiento. Debe cerrar y reiniciar el navegador para ver el nuevo certificado. La reconexión con la PSTCLI también muestra una advertencia de que la huella digital del certificado ha cambiado, lo que indica que el nuevo certificado se instaló correctamente.