我在ssl支持下构建了spring-boot可执行文件大战。我的application.properties文件是:
server.port = 8443 server.ssl.key-store = classpath:keystore.jks server.ssl.key-store-password = secret server.ssl.key-password = another-secret
WAR文件包含“ keystore.jks”文件。但是我得到一个奇怪的例外:
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Could not find key store classpath:keystore.jks Caused by: java.io.FileNotFoundException: class path resource [keystore.jks] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/projects/vi3na/vi3na.web/target/vi3na.war!/WEB-INF/classes!/keystore.jks
什么符号“!” 在路径’D:/projects/vi3na/vi3na.web/target/vi3na.war!/ WEB-INF / classes!/keystore.jks’中的意思
更新: 由于此增强请求,下面描述的限制不再适用。Tomcat 8.0.28+和7.0.66+可以从jar文件中加载密钥存储。
我猜您是使用Tomcat作为嵌入式servlet容器吗?如参考文档中所述,Tomcat当前不支持从jar中加载密钥库或信任库:
Tomcat要求可以在文件系统上直接访问密钥存储(如果使用的话,还需要信任存储),即不能从jar文件中读取它。
您应该移出keystore.jksjar,并更新server.ssl.key-store其在文件系统中的位置。
keystore.jks
server.ssl.key-store