我按照指南在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 app,它会抛出:
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,并启动时没有错误?
答案 0 :(得分:9)
我也有同样的问题并且能够解决它。我的问题是生成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>
请注意密钥库文件路径file:keystore.p12
,如果它将与可执行.jar
文件位于同一目录中。
答案 1 :(得分: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
答案 2 :(得分:1)
我也遇到同样的问题,但在我的情况下,密钥库文件的文件路径(在application.properties中)在Linux上不正确,并导致此错误消息。
答案 3 :(得分:0)
我有同样的问题。对我来说 server.ssl.key-alias 设置为错误的密钥。因此,听起来 application.properties 中的某些服务器错误配置可能导致出现此错误消息。
答案 4 :(得分:0)
从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 =密码
server.ssl.key-alias = alias_name
注意:server.ssl.key-store是指密钥库位置。采用 classpath前缀(如果它在src / main / resources中存在)。否则使用 文件:/ some / location。
答案 5 :(得分:-2)