https 后的 Spring Boot:配置为侦听端口 8444 的 Tomcat 连接器无法启动。

Posted

技术标签:

【中文标题】https 后的 Spring Boot:配置为侦听端口 8444 的 Tomcat 连接器无法启动。【英文标题】:Spring boot after https: The Tomcat connector configured to listen on port 8444 failed to start. 【发布时间】:2018-05-12 02:52:56 【问题描述】:

我按照指南在 Spring Boot 中启用 https。该应用程序之前正在处理https://localhost:8080

我创建了一个keystore.jks,它与我的application.properties 在同一目录中,现在看起来像:

# Define a custom port instead of the default 8080
server.port = 8444
# Tell Spring Security (if used) to require requests over HTTPS
security.require-ssl=true
# The format used for the keystore
server.ssl.key-store-type:PKCS12
# The path to the keystore containing the certificate
server.ssl.key-store=keystore.p12
# The password used to generate the certificate
server.ssl.key-store-password=<somepassword>
# The alias mapped to the certificate
server.ssl.key-alias=tomcat

现在,如果我运行 main 方法来启动 spring boot 应用程序,它会抛出:

Description:

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

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 8444, or configure this application to listen on another port.

端口没有被使用,应该是配置错误吧?

我不确定要更改什么。这是一个简单的 SPA 应用程序,Spring 只提供一个 index.html 并有一个 REST 端点。这种情况下tomcat/spring应该如何配置接受https,并且启动不出错?

【问题讨论】:

server.ssl.key-store-type 行的小字体。 yml 使用 :file.properties 使用 = 加上尝试使用调试标志运行。它可以帮助找到一些隐藏的错误 我也有同样的问题。你找到解决办法了吗 是的。路径是项目的根目录,而不是文件夹中的相对路径。所以在应用程序属性中,键的路径应该是server.ssl.key-store=backend/src/main/resources/keystore.p12 【参考方案1】:

我也遇到了同样的问题,并且能够解决它。我的问题是生成 keystore.p12 文件。

如果你有证书文件和私钥文件,你可以使用以下命令生成keystore.p12文件。

openssl pkcs12 -export -in <mycert.crt> -inkey <mykey.key> -out keystore.p12 -name <alias>

系统会提示您输入密码,您可以在此处输入您喜欢的密码。 生成密钥库文件后,将其复制到您的 .jar 文件所在的目录。

以下是一个工作示例配置。

server.port=8443
security.require-ssl=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=file:keystore.p12
server.ssl.key-store-password=<password>
server.ssl.key-alias=<alias>

如果要与可执行文件.jar 驻留在同一目录中,请记下密钥存储文件路径file:keystore.p12

【讨论】:

同样的问题 - 错误的证书文件。 1) 验证文件的提示。如果您在 Windows 上,双击 *.p12 文件,Windows 将启动“证书导入向导”。 2)还有一件事,不需要key-alias【参考方案2】:

我通过使用以下配置解决了同样的问题

# Define a custom port instead of the default 8080
server.port=8443
# Tell Spring Security (if used) to require requests over HTTPS
security.require-ssl=true
# The format used for the keystore 
server.ssl.key-store-type=PKCS12
# The path to the keystore containing the certificate
server.ssl.key-store=src/main/resources/keystore.p12
# The password used to generate the certificate
server.ssl.key-store-password=root0

我删除了别名,它运行良好。 “您可能不需要密钥别名,因为只有一个密钥条目”引用自 TOMCAT SSL Error: Alias name does not identify a key entry

【讨论】:

是的,通过从 application.properties 中删除或评论 server.ssl.key-alias=myalias 即可。 忠告:不要在示例中包含密码 :) 这只是一个虚拟密码;)【参考方案3】:

我也遇到了同样的问题,但在我的情况下,密钥库文件的文件路径(在 application.properties 中)在 Linux 上不正确并导致此错误消息。

【讨论】:

【参考方案4】:

从 Spring Boot 2.0 及更高版本开始,您可以忽略此属性。

security.require-ssl=true

要启用 SSL,请在 application.properties 中使用以下配置

用于密钥库的格式

server.ssl.key-store-type=JKS

包含证书的密钥库路径

server.ssl.key-store=classpath:somecert.jks

用于生成证书的密码

server.ssl.key-store-password=password

映射到证书的别名

server.ssl.key-alias=alias_name

注意:server.ssl.key-store 指的是密钥库位置。采用 类路径前缀,如果它存在于 src/main/resources 中。否则使用, 文件:/一些/位置。

【讨论】:

【参考方案5】:

我有同样的问题。对我来说 server.ssl.key-alias 被设置为错误的键。因此,听起来 application.properties 中的某些 server 错误配置可能会导致出现此错误消息。

【讨论】:

以上是关于https 后的 Spring Boot:配置为侦听端口 8444 的 Tomcat 连接器无法启动。的主要内容,如果未能解决你的问题,请参考以下文章

优化后的 Spring Boot 启动究竟能有多快?

Get|Spring Boot 五种热部署方式

Spring Boot 如何部署到 Linux 中的服务

数据库故障后的 Hikari CP (Spring Boot) 连接恢复问题

Spring Boot 配置详解

spring/boot 打包,资源/配置/业务文件分离