简体   繁体   English

如何在 spring 启动 2.1.9 中配置 ssl 证书

[英]how to configure ssl certificate in spring boot 2.1.9

I have a certificate file blog.cupcat.cn.jks.我有一个证书文件 blog.cupcat.cn.jks。 I also have a password for blog.cupcat.cn.jks.我也有 blog.cupcat.cn.jks 的密码。

My configuration in application.yml我在 application.yml 中的配置

server:
  port: 443
  ssl:
    key-store: classpath:blog.cupcat.cn.jks
    key-store-password: password
    key-store-type: JKS

I have a copy of the blog.cupcat.cn.jks file in the resources dir.我在资源目录中有一个 blog.cupcat.cn.jks 文件的副本。

when I start spring boot, I get the error:当我启动 spring 启动时,出现错误:

 2019-10-29 01:05:39.833  INFO 20415 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-10-29 01:05:41.855 ERROR 20415 --- [           main] org.apache.catalina.util.LifecycleBase   : Failed to start component [Connector[HTTP/1.1-443]]

org.apache.catalina.LifecycleException: Protocol handler start failed
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1008) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:227) [tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:263) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:195) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:297) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552) [spring-context-5.1.10.RELEASE.jar!/:5.1.10.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204) [spring-boot-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
    at top.elfgirl.cloth.recycle.ClothRecycleApplication.main(ClothRecycleApplication.java:14) [classes!/:0.0.1-SNAPSHOT]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_221]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_221]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_221]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_221]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [cloth-recycle-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [cloth-recycle-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) [cloth-recycle-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) [cloth-recycle-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
Caused by: java.lang.IllegalArgumentException: Stream closed
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:585) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    ... 22 common frames omitted
Caused by: java.io.IOException: Stream closed
    at java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67) ~[na:1.8.0_221]
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142) ~[na:1.8.0_221]
    at org.springframework.boot.loader.jar.ZipInflaterInputStream.read(ZipInflaterInputStream.java:52) ~[cloth-recycle-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_221]
    at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_221]
    at java.security.DigestInputStream.read(DigestInputStream.java:124) ~[na:1.8.0_221]
    at java.io.DataInputStream.readInt(DataInputStream.java:387) ~[na:1.8.0_221]
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658) ~[na:1.8.0_221]
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56) ~[na:1.8.0_221]
    at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224) ~[na:1.8.0_221]
    at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70) ~[na:1.8.0_221]
    at java.security.KeyStore.load(KeyStore.java:1445) ~[na:1.8.0_221]
    at org.apache.tomcat.util.security.KeyStoreUtil.load(KeyStoreUtil.java:69) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:217) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:206) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:283) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) ~[tomcat-embed-core-9.0.26.jar!/:9.0.26]
    ... 28 common frames omitted

2019-10-29 01:05:42.022  INFO 20415 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]

Version: spring boot: 2.19版本:spring 启动:2.19

It seems to be a issue with Tomcat 9.0.26 within Spring 2.1.9.RELEASE. Spring 2.1.9.RELEASE 中的 Tomcat 9.0.26 似乎是一个问题

Forcing version 9.0.24 removes the problem:强制版本 9.0.24 消除了该问题:

If using maven add to your pom.xml :如果使用 maven 添加到您的pom.xml

<properties>
    <tomcat.version>9.0.24</tomcat.version>
</properties>

If using gradle, add to your build.gradle :如果使用 gradle,请添加到您的build.gradle

ext['tomcat.version'] = '9.0.24'

Also, consider downgrading to 2.1.8.RELEASE for a more stable version.此外,考虑降级到2.1.8.RELEASE以获得更稳定的版本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 Spring 启动应用程序在 Angular 8 中配置 SSL 证书 - Configure SSL certificate in Angular 8 with Spring boot Application Spring Boot中的SSL证书 - SSL Certificate in Spring Boot 如何配置Tomcat(在Spring Boot中)以提供具有SSL连接的完整证书链? (目前与Chromium合作,而非Firefox) - How to configure Tomcat (in Spring Boot) to provide full certificate chain with SSL connections? (currently working with Chromium, not with Firefox) 如何在YML文件Spring Boot中配置SSL mongodb连接? - How to configure SSL mongodb connection in YML file spring boot? 如何配置Spring启动应用程序以通过MySQL使用SSL / TLS? - How to configure spring boot application to use SSL/TLS over MySQL? 如何在 Spring 引导上配置 SSL - EC2 实例上的 Angular 应用程序 - How to configure SSL on Spring Boot - Angular app on EC2 instance Spring Boot SSL 和密钥库证书安装 - Spring Boot SSL and keystore certificate installation spring 启动以启用 SSL 与来自权威机构的证书 - spring boot to enable SSL with certificate from the authority 从 Spring Boot 2.1.9 升级到 2.2.1(Spring 集成)后的 ClassCastException - ClassCastException after upgrading from Spring Boot 2.1.9 to 2.2.1 (Spring Integration) 如何使用 a.pem SSL 证书为 REST API 开发为 Z38008DD81C2F4D798Z5ECFDE 应用程序 - How to use a .pem SSL certificate for REST API developed as Spring Boot application
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM