配置为使用 https 时 Spring 不启动

标签 spring

我遵循了这个指南: http://nemerosa.ghost.io/2015/07/06/enabling-ssl-with-spring-boot/

基本上是在我项目的主目录中运行这个命令:

keytool -genkey -alias ontrack -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 \  
    -dname "CN=Damien Coraboeuf, OU=Ontrack, O=Nemerosa, L=Brussels, ST=Unknown, C=BE" \
    -keypass ontrack \
    -storepass ontrack

并将其粘贴到我的 application.yml 中:

server:  
  port: 443
  ssl:
    enabled: true
    key-alias: ontrack
    key-store: "keystore.p12"
    key-store-type: PKCS12
    key-store-password: ontrack
    key-password: ontrack

这是生成的日志:

org.springframework.boot.context.embedded.tomcat.ConnectorStartFailedException: Connector configured to listen on port 443 failed to start
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.checkThatConnectorsHaveStarted(TomcatEmbeddedServletContainer.java:205)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:183)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:297)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:145)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at com.zimperium.server.ZimperiumApplication.init(ZimperiumApplication.java:59)
    at com.zimperium.server.appdirect.Application.main(Application.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:58)

2017-10-10 22:22:45.656 ERROR [appdirect,,,] 121 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

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

Description:

The Tomcat connector configured to listen on port 443 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 443, or configure this application to listen on another port.

这是在 Docker 容器内运行,因此该端口不可能已被使用(而且它不是我尝试的唯一端口)。

最佳答案

在某些*nix 系统上,1 到1024 端口只能由root 权限使用。您有两个选择:

  1. 以 root 身份运行您的应用程序(不推荐)
  2. 在端口 > 1024(可能是 8443)上运行您的应用程序

关于配置为使用 https 时 Spring 不启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46676987/

相关文章:

java - 我可以有一个使用 Spring Data JPA 处理多个实体类的 JPA 存储库接口(interface)吗?

java - Spring Framework 4.3.0 - 我什么时候需要@Autowired?

java - WebApplicationInitializer 调用了两次

java - Spring GET 和 POST 映射在不同的类中

html - Thymeleaf 中的算术运算

spring - 说我通过 Kubernetes 部署组件是否正确?

spring - ConditionalOnClass,为什么JVM允许运行时类不在类路径中

java - 在 Java Spring 中是否可以使用两个 Controller 类和一个 URI?

spring - Spring 服务中的 Drools XStream

java - Spring Integration 调用多个方法并响应回同一个 bean