PowerFlex 3.X: La interfaz de usuario web del servidor de presentación no se carga
Summary: La interfaz de usuario web del servidor de presentación no se carga debido a la existencia de varias extensiones de nombre alternativo del sujeto (SAN) presentes en el certificado.
Symptoms
Se inicia el servicio del servidor de presentación, pero la página web no puede cargar la pantalla de inicio de sesión inicial.
[root@host1 .config]# systemctl status mgmt-server.service
● mgmt-server.service - Scaleio MGMT Server
Loaded: loaded (/etc/systemd/system/mgmt-server.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-1-09 05:30:03 EST; 11s ago
Main PID: 29700 (java)
CGroup: /system.slice/mgmt-server.service
└─29700 /bin/java -Xmx4g -Dlog4j2.formatMsgNoLookups=true -Djna.tmpdir=/opt/emc/scaleio/mgmt-server/tmp -Djava.io.tmpdir=/opt/emc/scaleio/mg...
Dec 09 05:30:08 host1 java[29700]: at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:320)
...
Dec 09 05:30:08 host1 java[29700]: at java.lang.Thread.run(Thread.java:750)
El registro del servidor de presentación muestra los siguientes errores:
/opt/emc/scaleio/mgmt-server/logs/scaleio.log:
Suppressed: com.google.common.util.concurrent.ServiceManager$FailedService: HttpdService [FAILED]
Caused by: java.lang.IllegalStateException: KeyStores with multiple certificates are not supported on the base class org.eclipse.jetty.util.ssl.SslContextFactory. (Use org.eclipse.jetty.util.ssl.SslContextFactory$Server or org.eclipse.jetty.util.ssl.SslContextFactory$Client instead)
at org.eclipse.jetty.util.ssl.SslContextFactory.newSniX509ExtendedKeyManager(SslContextFactory.java:1288)
at org.eclipse.jetty.util.ssl.SslContextFactory.getKeyManagers(SslContextFactory.java:1270)
at org.eclipse.jetty.util.ssl.SslContextFactory.load(SslContextFactory.java:372)
at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:243)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.SslConnectionFactory.doStart(SslConnectionFactory.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:321)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:234)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at org.eclipse.jetty.server.Server.doStart(Server.java:401)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at com.emc.vxflexos.webui.backend.httpd.HttpdService.startUp(HttpdService.java:31)
at com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62)
at com.google.common.util.concurrent.Callables$4.run(Callables.java:119)
at java.lang.Thread.run(Thread.java:750)
Ejecute el siguiente comando para verificar si el servidor de presentación utiliza varias entradas SAN. Esto se puede ejecutar con el certificado que el cliente está renovando o reemplazando y que tiene varias entradas de extensión de SAN.
[root@host1 /]# openssl x509 -noout -text -in <location_of_new_signed_cert> | grep -A1 -i 'Subject Alternative Name'
X509v3 Subject Alternative Name:
DNS:host1, DNS:host1.
Impacto
Si no se carga la interfaz de usuario web para el servidor de administración, no se puede administrar el clúster de PowerFlex a través de la interfaz de usuario (UI). Esto compromete la facilidad de administración y operación del sistema PowerFlex.
Cause
El problema se produce cuando la infraestructura Jetty, específicamente la clase base org.eclipse.jetty.util.ssl.SslContextFactory intenta procesar varios certificados en un almacén de claves, una operación para la que no está diseñado. Esencialmente, la versión del servidor de presentación afectada no está equipada para administrar certificados que contienen más de una entrada de extensión de nombre alternativo de sujeto (SAN), lo que provoca un error cuando encuentra dichos certificados.
Resolution
- Utilice un certificado que solo contenga una entrada de extensión de nombre alternativo de sujeto (SAN). Esto se alinea con las limitaciones actuales del servidor de administración y debería permitir un funcionamiento normal.
- Actualice mgmt-server a la versión 3.6.1. Esta versión incluye compatibilidad mejorada con varias entradas de extensión de SAN, lo que elimina la necesidad de ajustar los certificados.
Versiones afectadas
PowerFlex 3.5.x
PowerFlex 3.6.0.x
Problema corregido en la versión
PowerFlex 3.6.1