我正在尝试为我的Spring Boot应用程序启用SSL以进行测试.我用这个命令行生成了一个密钥库文件:
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已成功启用,在构建过程中没有错误.
但是当我使用嵌入式Tomcat 7版本通过更改pom.xml文件来运行它时,如下所示:
7.0.65
SSL未启用,我遇到以下错误:
java.io.FileNotFoundException:/tmp/tomcat.4863947968145457153.8443/file:/home/yahyaharif/spring-workspace/demossl/keystore.p12(没有这样的文件或目录)
org.apache.catalina.LifecycleException:无法启动组件[Connector [org.apache.coyote.http11.Http11NioProtocol-8443]]
org.springframework.boot.context.embedded.EmbeddedServletContainerExcepti> on:无法启动嵌入式Tomcat servlet容器
我查了一下错误,我注意到我需要在我的main中添加一个嵌入式servlet容器bean,但无济于事.
我还确保密钥库文件的文件路径是正确的.
为什么在嵌入式Tomcat 8上没有完美启用SSL,而不是在嵌入式Tomcat 7上?
在Tomcat 8中进行了更改,以允许从嵌入式jar文件中加载密钥库.它已被移植到Tomcat 7,但在7.0.66发布之前将无法使用
如果您尝试使用期望此更改的Spring Boot版本(1.2.7或更高版本),如果不是,则会失败.我认为在Tomcat 7.0.66发布之前你有两个选择:
使用Tomcat 8
将Tomcat 7与Spring Boot 1.2.6或更早版本一起使用