AtomGraph / LinkedDataHub

The low-code Knowledge Graph application platform. Apache license.
https://atomgraph.github.io/LinkedDataHub/
Apache License 2.0
485 stars 122 forks source link

java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available on first startup #109

Closed f-krueger closed 2 years ago

f-krueger commented 2 years ago

When going through the Setup guide from the Readme I got a java.security.NoSuchAlgorithmException in container linkeddatahub_1 during startup. When connecting to https://localhost:4443 via Browser (Firefox and Chrome) I got a HTTP 500 Error with a similar stacktrace.

The following stacktrace appeared during startup:

linkeddatahub_1     | 17:15:45,346 [main] ERROR Application:589 - Could not load file
linkeddatahub_1     | java.io.IOException: Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available
linkeddatahub_1     |   at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2167)
linkeddatahub_1     |   at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222)
linkeddatahub_1     |   at java.base/java.security.KeyStore.load(KeyStore.java:1479)
linkeddatahub_1     |   at com.atomgraph.linkeddatahub.Application.<init>(Application.java:483)
linkeddatahub_1     |   at com.atomgraph.linkeddatahub.Application.<init>(Application.java:267)
linkeddatahub_1     |   at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
linkeddatahub_1     |   at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
linkeddatahub_1     |   at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
linkeddatahub_1     |   at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
linkeddatahub_1     |   at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1356)
linkeddatahub_1     |   at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1059)
linkeddatahub_1     |   at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:968)
linkeddatahub_1     |   at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1072)
linkeddatahub_1     |   at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1064)
linkeddatahub_1     |   at org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.createAndInitialize(AbstractHk2InjectionManager.java:189)
linkeddatahub_1     |   at org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.createAndInitialize(ImmediateHk2InjectionManager.java:30)
linkeddatahub_1     |   at org.glassfish.jersey.server.ApplicationConfigurator.createApplication(ApplicationConfigurator.java:114)
linkeddatahub_1     |   at org.glassfish.jersey.server.ApplicationConfigurator.init(ApplicationConfigurator.java:72)
linkeddatahub_1     |   at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:290)
linkeddatahub_1     |   at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4390)
linkeddatahub_1     |   at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:290)
linkeddatahub_1     |   at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:259)
linkeddatahub_1     |   at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
linkeddatahub_1     |   at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)
linkeddatahub_1     |   at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:347)
linkeddatahub_1     |   at javax.servlet.GenericServlet.init(GenericServlet.java:158)
linkeddatahub_1     |   at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1134)
linkeddatahub_1     |   at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:986)
linkeddatahub_1     |   at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4902)
linkeddatahub_1     |   at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5211)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
linkeddatahub_1     |   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
linkeddatahub_1     |   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
linkeddatahub_1     |   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706)
linkeddatahub_1     |   at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
linkeddatahub_1     |   at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1830)
linkeddatahub_1     |   at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
linkeddatahub_1     |   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
linkeddatahub_1     |   at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
linkeddatahub_1     |   at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
linkeddatahub_1     |   at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:526)
linkeddatahub_1     |   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:425)
linkeddatahub_1     |   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1576)
linkeddatahub_1     |   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
linkeddatahub_1     |   at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936)
linkeddatahub_1     |   at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
linkeddatahub_1     |   at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
linkeddatahub_1     |   at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
linkeddatahub_1     |   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
linkeddatahub_1     |   at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
linkeddatahub_1     |   at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
linkeddatahub_1     |   at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
linkeddatahub_1     |   at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
linkeddatahub_1     |   at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
linkeddatahub_1     |   at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
linkeddatahub_1     |   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
linkeddatahub_1     |   at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
linkeddatahub_1     |   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
linkeddatahub_1     |   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
linkeddatahub_1     |   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
linkeddatahub_1     |   at java.base/java.lang.reflect.Method.invoke(Method.java:566)
linkeddatahub_1     |   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
linkeddatahub_1     |   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
linkeddatahub_1     | Caused by: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available
linkeddatahub_1     |   at java.base/javax.crypto.Mac.getInstance(Mac.java:191)
linkeddatahub_1     |   at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2145)
linkeddatahub_1     |   ... 68 more
namedgraph commented 2 years ago

I'll take a look.

namedgraph commented 2 years ago

Hi @f-krueger. I cannot reproduce locally using this Java version:

openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)

Internally LinkedDataHub 2.x is also using OpenJDK 11.0.9.1.

What is your Java version? Is it newer than 11.0.9.1? Then it could it be the JDK-8267599 bug. I suspect LDH cannot read the certificate you have generated using the newer JDK.

f-krueger commented 2 years ago

Hi @namedgraph, I actually tried with a much newer version (openjdk version "17.0.1" 2021-10-19). However, when using the suggested version, it worked. Maybe you could add the required java version to the guide.

Thank you for your fast reply

namedgraph commented 2 years ago

Good idea! Thanks for the feedback.

FYI a new version is available in the develop branch.

namedgraph commented 2 years ago

Reopening as multiple MacOS users are experiencing this. Probably need to upgrade Java in the LDH image to 17.

namedgraph commented 2 years ago

Should be fixed now with upgrade of the Docker base image to Java 17.