我遵循了这个指南: 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 权限使用。您有两个选择:
- 以 root 身份运行您的应用程序(不推荐)
- 在端口 > 1024(可能是 8443)上运行您的应用程序
关于配置为使用 https 时 Spring 不启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46676987/