无法部署具有SSL证书的Spring Boot应用

我正在对我的Spring Boot应用程序实施SSL,因此无法在测试服务器中启动该应用程序。 我遵循了本教程:https://www.thomasvitale.com/https-spring-boot-ssl-certificate/

我的公司为我提供了一个对我的服务器有效的.crt,我创建了一个.p12来实现SSL。我在服务器中使用了以下命令来创建de .p12文件: keytool -import -alias qcloud2 -file ../wildcard_crg_eu.crt -keystore qcloud2.p12 -storepass myamazingpassword

然后,我将.p12文件复制到资源文件夹中的本地计算机上,并修改了application.yml文件:

server:
  port: 8181
  ssl:
    key-alias: qcloud2
    key-store-type: pkcs12
    key-password: myamazingpassword
    key-store: classpath:qcloud2.p12

在服务器中执行.jar时,出现此错误:

2019-11-21 11:17:57.273  INFO 4576 --- [           main] o.s.m.s.b.SimpleBrokerMessageHandler     : Started.
2019-11-21 11:17:57.545 ERROR 4576 --- [           main] org.apache.catalina.util.LifecycleBase   : Failed to start component [Connector[HTTP/1.1-8181]]

org.apache.catalina.LifecycleException: Protocol handler start failed
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1008) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:227) [tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:256) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:198) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:300) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) [spring-context-5.0.9.RELEASE.jar!/:5.0.9.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:780) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1277) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1265) [spring-boot-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
    at eu.qcloud.QCloudApplication.main(QCloudApplication.java:19) [classes!/:1.0.17SSL]
    at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method) ~[na:1.8.0_222]
    at sun.reflect.NativeMethodaccessorImpl.invoke(NativeMethodaccessorImpl.java:62) ~[na:1.8.0_222]
    at sun.reflect.DelegatingMethodaccessorImpl.invoke(DelegatingMethodaccessorImpl.java:43) ~[na:1.8.0_222]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_222]
    at org.springframework.boot.loader.MainmethodRunner.run(MainmethodRunner.java:48) [QCloud2-1.0.17SSL.jar:1.0.17SSL]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [QCloud2-1.0.17SSL.jar:1.0.17SSL]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [QCloud2-1.0.17SSL.jar:1.0.17SSL]
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [QCloud2-1.0.17SSL.jar:1.0.17SSL]
Caused by: java.lang.IllegalArgumentException: DerInputStream.getLength(): lengthTag=109,too big.
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:586) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    ... 22 common frames omitted
Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=109,too big.
    at sun.security.util.DerInputStream.getLength(DerInputStream.java:599) ~[na:1.8.0_222]
    at sun.security.util.DerValue.init(DerValue.java:391) ~[na:1.8.0_222]
    at sun.security.util.DerValue.<init>(DerValue.java:332) ~[na:1.8.0_222]
    at sun.security.util.DerValue.<init>(DerValue.java:345) ~[na:1.8.0_222]
    at sun.security.pkcs12.pkcs12KeyStore.engineLoad(pkcs12KeyStore.java:1938) ~[na:1.8.0_222]
    at java.security.KeyStore.load(KeyStore.java:1445) ~[na:1.8.0_222]
    at org.apache.tomcat.util.security.KeyStoreUtil.load(KeyStoreUtil.java:67) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:217) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.SSLHostConfigCertificate.getcertificateKeystore(SSLHostConfigCertificate.java:206) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:283) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) ~[tomcat-embed-core-9.0.27.jar!/:9.0.27]
    ... 28 common frames omitted

2019-11-21 11:17:57.551  INFO 4576 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-11-21 11:17:57.557  WARN 4576 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [HikariPool-1 housekeeper] 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(LockSupport.java:215)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)
2019-11-21 11:17:57.573  INFO 4576 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-11-21 11:17:57.576 ERROR 4576 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

The Tomcat connector configured to listen on port 8181 failed to start. The port may already be in use or the connector may be misconfigured.

另一个应用程序或服务未使用端口8181。

然后我尝试使用以下命令将.p12转换为.jks:keytool -importkeystore -srckeystore qcloud2.p12 -srcstoretype pkcs12 -srcalias qcloud2 -destkeystore qcloud2.jks -deststoretype jks -deststorepass myamazingpassword -destalias qcloud2

但是我遇到相同的错误:Enter source keystore password:
keytool error: java.io.IOException: DerInputStream.getLength(): lengthTag=109,too big.

我该如何做?

谢谢

wqh467212692 回答:无法部署具有SSL证书的Spring Boot应用

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3058904.html

大家都在问