Java 由于不可恢复的KeyException,嵌入式Tomcat无法启动

Java 由于不可恢复的KeyException,嵌入式Tomcat无法启动,java,spring-boot,tomcat,ssl,keystore,Java,Spring Boot,Tomcat,Ssl,Keystore,由于与密钥库相关的一些问题,我的嵌入式tomcat服务器无法启动 我在stackoverflow和类似的平台上发现了很多与此相关的帖子。大多数建议的解决方案都意味着密钥和密钥库密码不匹配。事实并非如此。密码是一样的 我的服务器是建立在jhipster的基础上的,它成功地启动了,并为我们的组织发布了另一个密钥库 spring boot version: 1.3.3.RELEASE spring batch version: 2.2.0.RELEASE spring beans version: 4

由于与密钥库相关的一些问题,我的嵌入式tomcat服务器无法启动

我在stackoverflow和类似的平台上发现了很多与此相关的帖子。大多数建议的解决方案都意味着密钥和密钥库密码不匹配。事实并非如此。密码是一样的

我的服务器是建立在jhipster的基础上的,它成功地启动了,并为我们的组织发布了另一个密钥库

spring boot version: 1.3.3.RELEASE
spring batch version: 2.2.0.RELEASE
spring beans version: 4.2.5.RELEASE
tomcat embed version: 8.0.32
jre version: 1.8.0_171-b11
我基于嵌入式tomcat构建了一个简单的rest控制器,它只包含一个rest控制器。此简单服务器成功地启动了 导致服务器失败的密钥库

stacktrace与大多数与密钥库问题相关的帖子非常相似:

[ERROR] 2018-ÎíÎñÎÿ-06 09:46:33 org.apache.coyote.http11.Http11NioProtocol - Failed to start end point associated with ProtocolHandler ["http-nio-443"]
java.security.UnrecoverableKeyException: Cannot recover key
        at sun.security.provider.KeyProtector.recover(Unknown Source)
        at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
        at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source)
        at sun.security.provider.KeyStoreDelegator.engineGetKey(Unknown Source)
        at sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(Unknown Source)
        at java.security.KeyStore.getKey(Unknown Source)
        at sun.security.ssl.SunX509KeyManagerImpl.<init>(Unknown Source)
        at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(Unknown Source)
        at javax.net.ssl.KeyManagerFactory.init(Unknown Source)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:619)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:548)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:360)
        at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:765)
        at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:473)
        at org.apache.catalina.connector.Connector.startInternal(Connector.java:986)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        at org.apache.catalina.core.StandardService.addConnector(StandardService.java:239)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
        at com.merc.autop.uhub.Application.main(Application.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54)
        at java.lang.Thread.run(Unknown Source)
[ERROR] 2018-ÎíÎñÎÿ-06 09:46:33 org.apache.catalina.core.StandardService - Failed to start connector [Connector[HTTP/1.1-443]]
org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-443]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
        at org.apache.catalina.core.StandardService.addConnector(StandardService.java:239)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
        at com.merc.autop.uhub.Application.main(Application.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54)
        at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: service.getName(): "Tomcat";  Protocol handler start failed
        at org.apache.catalina.connector.Connector.startInternal(Connector.java:993)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        ... 17 common frames omitted
Caused by: java.security.UnrecoverableKeyException: Cannot recover key
        at sun.security.provider.KeyProtector.recover(Unknown Source)
        at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
        at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source)
        at sun.security.provider.KeyStoreDelegator.engineGetKey(Unknown Source)
        at sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(Unknown Source)
        at java.security.KeyStore.getKey(Unknown Source)
        at sun.security.ssl.SunX509KeyManagerImpl.<init>(Unknown Source)
        at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(Unknown Source)
        at javax.net.ssl.KeyManagerFactory.init(Unknown Source)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:619)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:548)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:360)
        at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:765)
        at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:473)
        at org.apache.catalina.connector.Connector.startInternal(Connector.java:986)
        ... 18 common frames omitted
[WARN] 2018-ÎíÎñÎÿ-06 09:46:33 org.apache.catalina.loader.WebappClassLoaderBase - The web application [ROOT] appears to have started a thread named [Hikari Housekeeping Timer (pool HikariPool-0)] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
 java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
 java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 java.lang.Thread.run(Unknown Source)
[WARN] 2018-ÎíÎñÎÿ-06 09:46:33 org.apache.catalina.loader.WebappClassLoaderBase - The web application [ROOT] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.util.TimerThread.mainLoop(Unknown Source)
 java.util.TimerThread.run(Unknown Source)
[ERROR] 2018-ÎíÎñÎÿ-06 09:46:33 org.springframework.boot.SpringApplication - Application startup failed
org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat servlet container
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:165)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
        at com.merc.autop.uhub.Application.main(Application.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Tomcat connector in failed state
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:159)
        ... 14 common frames omitted
Exception in thread "main" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:62)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54)
        ... 1 more
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat servlet container
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:165)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
        at com.merc.autop.uhub.Application.main(Application.java:99)
        ... 6 more
Caused by: java.lang.IllegalStateException: Tomcat connector in failed state
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:159)
        ... 14 more
[ERROR]2018-ÎíÎñÎÿ-06 09:46:33 org.apache.coyote.http11.Http11NioProtocol-无法启动与ProtocolHandler关联的端点[“http-nio-443”]
java.security.UnrecoverableKeyException:无法恢复密钥
位于sun.security.provider.KeyProtector.recover(未知源)
位于sun.security.provider.JavaKeyStore.engineGetKey(未知源)
位于sun.security.provider.JavaKeyStore$JKS.engineGetKey(未知源)
位于sun.security.provider.KeyStoreDelegator.engineGetKey(未知源)
位于sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(未知源)
位于java.security.KeyStore.getKey(未知源)
位于sun.security.ssl.SunX509KeyManagerImpl.(未知源)
位于sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(未知源)
位于javax.net.ssl.KeyManagerFactory.init(未知源)
位于org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManager(JSSESocketFactory.java:619)
位于org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManager(JSSESocketFactory.java:548)
位于org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:360)
位于org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:765)
位于org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:473)
位于org.apache.catalina.connector.connector.startInternal(connector.java:986)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
位于org.apache.catalina.core.StandardService.addConnector(StandardService.java:239)
位于org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194)
位于org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
位于org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
位于com.merc.autop.uhub.Application.main(Application.java:99)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54)
位于java.lang.Thread.run(未知源)
[错误]2018-06 09:46:33 org.apache.catalina.core.StandardService-无法启动连接器[连接器[HTTP/1.1-443]]
org.apache.catalina.LifecycleeException:无法启动组件[Connector[HTTP/1.1-443]]
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
位于org.apache.catalina.core.StandardService.addConnector(StandardService.java:239)
位于org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194)
位于org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
位于org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
位于com.merc.autop.uhub.Application.main(Application.java:99)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54)
位于java.lang.Thread.run(未知源)
原因:或