Apache NiFi从1.24升级到2.x后出现400 Invalid SNI错误
解决Apache NiFi从1.24升级到2.x后访问出现400 Invalid SNI错误的问题
问题概述
将Apache NiFi从1.24版本升级至2.x版本后,服务正常运行且8443端口处于监听状态,但访问网页时出现400错误,提示"Invalid SNI"(无效的SNI)。
错误信息详情
网页端错误
HTTP ERROR 400 Invalid SNI
URI: /nifi
STATUS: 400
消息: 无效的SNI
Servlet: -
原因: org.eclipse.jetty.http.BadMessageException: 400: Invalid SNI
堆栈跟踪:
org.eclipse.jetty.http.BadMessageException: 400: 无效的SNI 在 org.eclipse.jetty.server.SecureRequestCustomizer.customize(SecureRequestCustomizer.java:266) 在 org.eclipse.jetty.server.SecureRequestCustomizer.customize(SecureRequestCustomizer.java:207) 在 org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1594) 在 org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) 在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) 在 org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:461) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:193) 在 org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:208) 在 org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:155) 在 org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:450) 在 org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) 在 org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:558) 在 org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:379) 在 org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:146) 在 org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) 在 org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) 在 org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) 在 org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) 在 java.base/java.lang.Thread.run(Thread.java:1583)
应用日志(app.log)
2023-11-30 09:56:46,456 WARN [NiFi Web Server-32] org.eclipse.jetty.server.HttpChannel handleException /nifi org.eclipse.jetty.http.BadMessageException: 400: 无效的SNI 2023-11-30 09:56:46,527 WARN [NiFi Web Server-36] org.eclipse.jetty.server.HttpChannel handleException /favicon.ico org.eclipse.jetty.http.BadMessageException: 400: 无效的SNI
解决方案
1. 验证SSL证书的域名配置
NiFi 2.x依赖的Jetty版本对SNI检查更为严格,需确保SSL证书包含访问所用的域名或IP:
- 检查证书的Subject Alternative Name(SAN)字段,确认包含访问NiFi时使用的域名或IP
- 若使用自签名证书,重新生成时添加正确的SAN信息,示例命令:
keytool -genkeypair -alias nifi -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore nifi-keystore.p12 -validity 3650 -ext SAN=DNS:nifi.example.com,IP:192.168.1.100
2. 调整Jetty的SNI检查策略
修改nifi.properties配置文件,禁用强制SNI检查:
- 添加或修改以下配置项:
nifi.web.https.secure.request.customizer=org.eclipse.jetty.server.SecureRequestCustomizer nifi.web.https.secure.request.customizer.sni-host-check=false - 重启NiFi服务使配置生效
3. 使用正确的访问方式
- 优先使用证书绑定的域名访问NiFi,避免直接使用IP(除非证书已包含该IP的SAN)
- 测试环境下可临时在浏览器中忽略SNI错误,但生产环境不建议
4. 检查反向代理配置(如有)
若NiFi前端部署了反向代理(如Nginx、Apache),需确保代理正确传递SNI信息:
- Nginx需添加
proxy_ssl_server_name on;到proxy_pass配置块中 - 验证代理服务器的SSL配置是否正确转发请求头
内容的提问来源于stack exchange,提问作者bentech4u
相关产品推荐
相关产品推荐

