TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 实战 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 实战 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • Hadoop

  • Spark

  • Trino

  • Hudi

  • Paimon

  • Livy

  • Flink

  • Atlas

  • Superset

  • Jsvc

  • Zookeeper

  • Hive

  • Sqoop

  • Cloudbeaver

  • Bigtop-select

  • Knox

    • xmlsectool 依赖缺失问题解析
    • webhdfs-test 依赖收敛冲突问题处理
    • Invalid keystore format 问题处理
      • 一、问题现象:Gateway 启动阶段直接失败
      • 二、问题根因:gateway.jks 与当前 master secret 不一致
        • 2.1 Knox 中 keystore 的生成逻辑
        • 2.2 触发问题的典型场景
      • 三、为何 Ambari 页面无法修改 master secret?
      • 四、这个密码到底是什么?
      • 五、正确处理方式(可重建场景)
        • 5.1 删除已有 gateway.jks
        • 5.2 通过 Ambari 重启 Knox
    • Knox is not allowed to impersonate admin
    • X-Forwarded-For 406 错误的原因与处理
  • Hue

  • 报错解决-Bigtop
  • Knox
JaneTTR
2025-12-24
目录

Invalid keystore format 问题处理

# 一、问题现象:Gateway 启动阶段直接失败

在启动 Knox Gateway 服务时,进程未完成初始化即退出。 通过 gateway.log 可以观察到如下关键错误信息:

ERROR knox.gateway - Failed to load keystore ... Invalid keystore format
FATAL knox.gateway - Failed to start gateway:
The identity keystore was not loaded properly - the provided password may not match the password for the keystore.
1
2
3

对应的完整堆栈如下(节选):


[root@dev1 logs]# cat gateway.log
2025-12-12 10:52:08,311  INFO  knox.gateway (GatewayServer.java:logSysProp(233)) - System Property: user.name=knox
2025-12-12 10:52:08,320  INFO  knox.gateway (GatewayServer.java:logSysProp(233)) - System Property: user.dir=/home/knox
2025-12-12 10:52:08,320  INFO  knox.gateway (GatewayServer.java:logSysProp(233)) - System Property: java.runtime.name=Java(TM) SE Runtime Environment
2025-12-12 10:52:08,321  INFO  knox.gateway (GatewayServer.java:logSysProp(233)) - System Property: java.runtime.version=1.8.0_202-b08
2025-12-12 10:52:08,321  INFO  knox.gateway (GatewayServer.java:logSysProp(233)) - System Property: java.home=/opt/modules/jdk1.8.0_202/jre
2025-12-12 10:52:08,498  INFO  knox.gateway (GatewayConfigImpl.java:loadConfigResource(554)) - Loading configuration resource jar:file:/usr/bigtop/3.2.0/usr/lib/knox/bin/../lib/gateway-server-2.1.0.jar!/conf/gateway-default.xml
2025-12-12 10:52:08,580  INFO  knox.gateway (GatewayConfigImpl.java:loadConfigFile(542)) - Loading configuration file /usr/bigtop/3.2.0/usr/lib/knox/conf/gateway-site.xml
2025-12-12 10:52:08,580  INFO  knox.gateway (GatewayConfigImpl.java:initGatewayHomeDir(482)) - Using /usr/bigtop/3.2.0/usr/lib/knox/bin/.. as GATEWAY_HOME via system property.
2025-12-12 10:52:08,581  INFO  knox.gateway (GatewayConfigImpl.java:init(475)) - Cookie scoping feature enabled: false
2025-12-12 10:52:08,596  INFO  knox.gateway (AbstractServiceFactory.java:logServiceUsage(103)) - Using default implementation for MasterService
2025-12-12 10:52:09,029  INFO  knox.gateway (AbstractServiceFactory.java:logServiceUsage(103)) - Using default implementation for AliasService
2025-12-12 10:52:09,033  INFO  knox.gateway (AbstractServiceFactory.java:logServiceUsage(103)) - Using default implementation for AliasService
2025-12-12 10:52:09,055  INFO  knox.gateway (JettySSLService.java:init(74)) - Credential store for the gateway instance found - no need to create one.
2025-12-12 10:52:09,081  ERROR knox.gateway (DefaultKeystoreService.java:isKeyStoreAvailable(509)) - Failed to load keystore [filename=/usr/bigtop/3.2.0/usr/lib/knox/data/security/keystores/gateway.jks, type=jks]: java.io.IOException: Invalid keystore format
2025-12-12 10:52:09,082  FATAL knox.gateway (GatewayServer.java:main(191)) - Failed to start gateway: org.apache.knox.gateway.services.ServiceLifecycleException: The identity keystore was not loaded properly - the provided password may not match the password for the keystore.
org.apache.knox.gateway.services.ServiceLifecycleException: The identity keystore was not loaded properly - the provided password may not match the password for the keystore.
        at org.apache.knox.gateway.services.security.impl.JettySSLService.init(JettySSLService.java:97) ~[gateway-server-2.1.0.jar:2.1.0]
        at org.apache.knox.gateway.services.GatewayServiceFactory.create(GatewayServiceFactory.java:48) ~[gateway-server-2.1.0.jar:2.1.0]
        at org.apache.knox.gateway.services.GatewayServiceFactory.create(GatewayServiceFactory.java:33) ~[gateway-server-2.1.0.jar:2.1.0]
        at org.apache.knox.gateway.services.DefaultGatewayServices.init(DefaultGatewayServices.java:59) ~[gateway-server-2.1.0.jar:2.1.0]
        at org.apache.knox.gateway.GatewayServer.main(GatewayServer.java:182) [gateway-server-2.1.0.jar:2.1.0]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_202]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_202]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_202]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_202]
        at org.apache.knox.gateway.launcher.Invoker.invokeMainMethod(Invoker.java:68) [gateway.jar:?]
        at org.apache.knox.gateway.launcher.Invoker.invoke(Invoker.java:39) [gateway.jar:?]
        at org.apache.knox.gateway.launcher.Command.run(Command.java:103) [gateway.jar:?]
        at org.apache.knox.gateway.launcher.Launcher.run(Launcher.java:75) [gateway.jar:?]
        at org.apache.knox.gateway.launcher.Launcher.main(Launcher.java:52) [gateway.jar:?]
Caused by: org.apache.knox.gateway.services.security.KeystoreServiceException: java.io.IOException: Invalid keystore format
        at org.apache.knox.gateway.services.security.impl.DefaultKeystoreService.isKeystoreForGatewayAvailable(DefaultKeystoreService.java:263) ~[gateway-server-2.1.0.jar:2.1.0]
        at org.apache.knox.gateway.services.security.impl.JettySSLService.init(JettySSLService.java:81) ~[gateway-server-2.1.0.jar:2.1.0]
        ... 13 more
Caused by: java.io.IOException: Invalid keystore format
        at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:663) ~[?:1.8.0_202]
        at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56) ~[?:1.8.0_202]
        at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224) ~[?:1.8.0_202]
        at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70) ~[?:1.8.0_202]
        at java.security.KeyStore.load(KeyStore.java:1445) ~[?:1.8.0_202]
        at org.apache.knox.gateway.services.security.impl.DefaultKeystoreService.isKeyStoreAvailable(DefaultKeystoreService.java:504) ~[gateway-server-2.1.0.jar:2.1.0]
        at org.apache.knox.gateway.services.security.impl.DefaultKeystoreService.isKeystoreForGatewayAvailable(DefaultKeystoreService.java:260) ~[gateway-server-2.1.0.jar:2.1.0]
        at org.apache.knox.gateway.services.security.impl.JettySSLService.init(JettySSLService.java:81) ~[gateway-server-2.1.0.jar:2.1.0]
        ... 13 more
[root@dev1 logs]#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

现象特征总结

  • Knox 进程尚未监听端口即退出
  • 错误集中在 Keystore 加载阶段
  • 日志明确指向 password 不匹配 / keystore 无法解析

# 二、问题根因:gateway.jks 与当前 master secret 不一致

# 2.1 Knox 中 keystore 的生成逻辑

Knox 在首次启动时,会基于 master secret 自动生成并维护一整套安全文件:

文件/组件 作用说明
gateway.jks Gateway 自身的身份与 SSL keystore
credential store 存储加密后的敏感配置
alias 信息 由 MasterService 统一加解密

核心事实

这些文件的加密口令来源只有一个:master secret

# 2.2 触发问题的典型场景

只要满足以下任意条件之一,就会命中该问题:

  • 目录中 已经存在 gateway.jks
  • 但 master secret 被修改 / 重置
  • 或当前运行环境中使用的 master secret 与最初生成 keystore 时不一致

此时 Knox 的行为是:

keystore 文件存在 keystore 内容无法解密 → 抛出 Invalid keystore format

# 三、为何 Ambari 页面无法修改 master secret?

在 Ambari 的 Knox 配置页面中,master.secret 通常呈现为只读状态:

ambari-master-secret-readonly

这是刻意的设计

  • master secret 只在首次初始化时生效
  • Ambari 禁止 UI 层直接修改
  • 目的是避免无意操作导致 所有已有 keystore 同时失效

这也是为什么:

  • 改配置文件无效
  • 改 UI 配置无效
  • 但 Knox 仍然继续报 keystore 错误

# 四、这个密码到底是什么?

这里的 “password” 并不是某个临时生成的随机值,而是:

Knox 安装阶段配置的 master secret

如果时间较久已经遗忘,可以回看当时的 安装文档 Knox安装指导手册 (opens new window)

master-secret-doc

关键结论

gateway.jks 的解密口令 = 当初配置的 master secret

# 五、正确处理方式(可重建场景)

如果满足以下条件之一:

  • 首次部署
  • 测试环境
  • 可以接受重新生成 keystore

那么处理方式非常直接。

# 5.1 删除已有 gateway.jks

在 Bigtop 环境中,文件路径通常为:

/usr/bigtop/current/knox-server/data/security/keystores/gateway.jks
1

示意如下:

gateway-jks-path

执行删除:

rm -f /usr/bigtop/current/knox-server/data/security/keystores/gateway.jks
1

操作说明

  • 只删除 gateway.jks
  • 不需要手工创建新文件
  • 不需要自行生成证书

# 5.2 通过 Ambari 重启 Knox

回到 Ambari 首页,直接重启 Knox 服务:

restart-knox

Knox 在启动过程中会自动完成:

  1. 读取当前 master secret
  2. 重新生成 gateway.jks
  3. 初始化 SSL 与 Credential Store
  4. 正常拉起 Jetty
#Bigtop#Knox#Keystore#master secret#启动失败#运维排错
webhdfs-test 依赖收敛冲突问题处理
Knox is not allowed to impersonate admin

← webhdfs-test 依赖收敛冲突问题处理 Knox is not allowed to impersonate admin→

最近更新
01
xmlsectool 依赖缺失问题解析
12-24
02
webhdfs-test 依赖收敛冲突问题处理
12-24
03
X-Forwarded-For 406 错误的原因与处理
12-24
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式