PowerFlex 3.X: Веб-інтерфейс Presentation Server не завантажується
摘要: Веб-інтерфейс Presentation Server не завантажується через наявність кількох розширень Subject Alternative Name (SAN), присутніх у сертифікаті.
症状
Сервіс сервера презентації запускається, але веб-сторінка не завантажує початковий екран входу.
[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)
Журнал презентаційного сервера показує такі помилки:
/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)
Виконайте наступну команду, щоб перевірити, чи використовує сервер презентації кілька записів SAN. Це можна запускати з сертифікатом, який клієнт оновлює або замінює і який має кілька записів розширення 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.
Вплив
Невдача у завантаженні веб-інтерфейсу для mgmt-сервера призводить до неможливості керувати кластером PowerFlex через інтерфейс користувача (UI). Це ставить під загрозу простоту управління та експлуатації системи PowerFlex.
原因
Проблема виникає, коли фреймворк Jetty, зокрема базовий клас org.eclipse.jetty.util.ssl.SslContextFactory намагається обробляти кілька сертифікатів у KeyStore, операцію, для якої вона не призначена. По суті, версія презентаційного сервера не оснащена для керування сертифікатами, які містять більше одного запису розширення Subject Alternative Name (SAN), що призводить до збоїв при зустрічі з такими сертифікатами.
解决方案
- Використовуйте сертифікат, який містить лише один запис розширення Subject Alternative Name (SAN). Це відповідає поточним обмеженням сервера mgmt і має забезпечити нормальну роботу.
- Оновіть сервер mgmt до версії 3.6.1. Ця версія містить покращену підтримку кількох записів розширень SAN, що полегшує необхідність коригувати сертифікати.
Впливові версії
PowerFlex 3.5.x
PowerFlex 3.6.0.x
Виправлено у версії
PowerFlex 3.6.1