OpenJDK 上密钥库的 Vault 初始化问题

Vault initialization issue with keystore on OpenJDK

当我们从 OracleJDK 切换到 OpenJDK 时,我们面临以下问题:

[Host Controller] 09:25:41,568 INFO [org.jboss.as] (MSC service thread 1-6) JBAS015899: WildFly 8.2.1.Final "Tweek" starting [Host Controller] 09:25:42,674 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014612: Operation ("add") failed - address: ([ [Host Controller] ("host" => "master"), [Host Controller]
("core-service" => "vault") [Host Controller] ]): java.lang.RuntimeException: JBAS015804: Error initializing vault -- org.jboss.as.server.services.security.VaultReaderException: JBAS013313: Vault Reader Exception: [Host Controller] at org.jboss.as.server.services.security.VaultAddHandler.performRuntime(VaultAddHandler.java:82) [wildfly-server-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.AbstractAddStepHandler.execute(AbstractAddStepHandler.java:75) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:660) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:501) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.AbstractOperationContext.completeStepInternal(AbstractOperationContext.java:298) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:293) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.ModelControllerImpl.boot(ModelControllerImpl.java:324) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:297) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.host.controller.DomainModelControllerService.boot(DomainModelControllerService.java:441) [wildfly-host-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.controller.AbstractControllerService.run(AbstractControllerService.java:259) [wildfly-controller-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_191] [Host Controller] Caused by: org.jboss.as.server.services.security.VaultReaderException: JBAS013313: Vault Reader Exception: [Host Controller] at org.jboss.as.security.vault.RuntimeVaultReader.createVault(RuntimeVaultReader.java:84) [wildfly-security-8.2.1.Final.jar:8.2.1.Final] [Host Controller] at org.jboss.as.server.services.security.VaultAddHandler.performRuntime(VaultAddHandler.java:80) [wildfly-server-8.2.1.Final.jar:8.2.1.Final] [Host Controller] ... 10 more [Host Controller] Caused by: org.jboss.security.vault.SecurityVaultException: java.lang.RuntimeException: PBOX000140: Unable to get keystore (/usr/jboss-8.2.0.Final/domain/vault/keystore.jceks) [Host Controller] at org.picketbox.plugins.vault.PicketBoxSecurityVault.init(PicketBoxSecurityVault.java:210) [Host Controller] at org.jboss.as.security.vault.RuntimeVaultReader.createVault(RuntimeVaultReader.java:82) [wildfly-security-8.2.1.Final.jar:8.2.1.Final] [Host Controller] ... 11 more [Host Controller] Caused by: java.lang.RuntimeException: PBOX000140: Unable to get keystore (/usr/jboss-8.2.0.Final/domain/vault/keystore.jceks) [Host Controller] at org.picketbox.plugins.vault.PicketBoxSecurityVault.getKeyStore(PicketBoxSecurityVault.java:688) [Host Controller] at org.picketbox.plugins.vault.PicketBoxSecurityVault.init(PicketBoxSecurityVault.java:205) [Host Controller] ... 12 more [Host Controller] Caused by: java.io.IOException: Invalid secret key format [Host Controller] at com.sun.crypto.provider.JceKeyStore.engineLoad(JceKeyStore.java:856) [sunjce_provider.jar:1.8.0_191] [Host Controller] at java.security.KeyStore.load(KeyStore.java:1445) [rt.jar:1.8.0_191] [Host Controller] at org.picketbox.util.KeyStoreUtil.getKeyStore(KeyStoreUtil.java:201) [Host Controller] at org.picketbox.util.KeyStoreUtil.getKeyStore(KeyStoreUtil.java:151) [Host Controller] at org.picketbox.plugins.vault.PicketBoxSecurityVault.getKeyStore(PicketBoxSecurityVault.java:685)

[Host Controller] ... 13 more [Host Controller] [Host Controller] 09:25:42,682 FATAL [org.jboss.as.host.controller] (Controller Boot Thread) JBAS010933: Host Controller boot has failed in an unrecoverable manner; exiting. See previous messages for details.

在 OracleJDK 中同样有效。使用与 OracleJDK 相同的密钥库文件。两个JDK版本都是8.

jdk1.8.0_121
java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64

任何人都可以指出 OpenJDK 有什么问题吗?

应用此处的解决方案后问题已解决:https://developer.jboss.org/thread/277727

保管库(和凭据存储)基于 JCEKS,更新 171 中的 JCEKS 格式发生了变化。 请将此依赖行 <module name="sun.jdk"/> 添加到 modules/system/layers/base/org/picketbox/main

或者迁移到已经包含此依赖项的 wildlfy 11