tomcat - 使用嵌入式 Tomcat 7 在 Spring Boot 中启用 SSL - FileNotFoundException 和 o.a.coyote.http11.Http11NioProtocol 问题

标签 tomcat ssl spring-boot tomcat7 pom.xml

我正在尝试为我的 Spring Boot 应用程序启用 SSL 以进行测试。我用这个命令行生成了一个 keystore 文件:

keytool -genkey -alias tomcat
-storetype PKCS12 -keyalg RSA -keysize 2048
-keystore keystore.p12 -validity 3650

并将以下配置添加到我的 application.properties 文件中:

server.port=8443
server.ssl.key-store: keystore.p12
server.ssl.key-store-password: mypassword
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat

当我使用嵌入式 Tomcat 8 版本运行应用程序时,SSL 已成功启用,在构建过程中没有出现任何错误。

但是当我通过如下更改 pom.xml 文件使用嵌入式 Tomcat 7 版本运行它时:

<properties>
    <tomcat.version>7.0.65</tomcat.version>
</properties>

SSL 未启用,我遇到了这些错误:

java.io.FileNotFoundException: /tmp/tomcat.4863947968145457153.8443/file:/home/yahyaharif/spring-workspace/demossl/keystore.p12 (No such file or directory)

org.apache.catalina.LifecycleException: Failed to start component [Connector[org.apache.coyote.http11.Http11NioProtocol-8443]]

org.springframework.boot.context.embedded.EmbeddedServletContainerExcepti> on: Unable to start embedded Tomcat servlet container

我查看了错误,发现我需要将一个嵌入式 servlet 容器 bean 添加到我的 main 中,但无济于事。

我还确保 keystore 文件的文件路径是正确的。

关于为什么 SSL 在嵌入式 Tomcat 8 而不是在嵌入式 Tomcat 7 上完美启用的任何线索?

最佳答案

Tomcat 8 中进行了更改,允许从嵌入式 jar 文件中加载 keystore 。已经backported to Tomcat 7但在 7.0.66 发布之前不会可用

如果您尝试使用期望此更改存在的 Spring Boot 版本(1.2.7 或更高版本),如果不存在,它将失败。在 Tomcat 7.0.66 发布之前,我认为您有两个选择:

  • 使用 Tomcat 8
  • 将 Tomcat 7 与 Spring Boot 1.2.6 或更早版本结合使用

关于tomcat - 使用嵌入式 Tomcat 7 在 Spring Boot 中启用 SSL - FileNotFoundException 和 o.a.coyote.http11.Http11NioProtocol 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077083/

相关文章:

hibernate - Spring MVC+Hibernate部署报错: expected at least 1 bean which qualifies as autowire candidate for this dependency

python - 为什么我在抓取网站时会收到 SSL 错误?

ssl - LDAP SSL 访问

java - Java动态连接数据库(Spring Boot)

java - 在同一项目中使用内存身份验证和数据库身份验证

java - Tomcat:热部署新 jar

tomcat7 无法在 Ubuntu Docker 容器内启动

eclipse - Tomcat 在 Eclipse 中运行时的 crossdomain.xml 位置

c# - 在 TCP 连接中使用安全性

java - Spring Boot-云 :/actuator/refresh working but not able to get the changed values on the fly