小编典典

找不到spring-boot可执行文件war密钥库

spring-boot

我在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’中的意思


阅读 340

收藏
2020-05-30

共1个答案

小编典典

更新:
由于此增强请求,下面描述的限制不再适用。Tomcat
8.0.28+和7.0.66+可以从jar文件中加载密钥存储。

原始答案

我猜您是使用Tomcat作为嵌入式servlet容器吗?如参考文档中所述,Tomcat当前不支持从jar中加载密钥库或信任库:

Tomcat要求可以在文件系统上直接访问密钥存储(如果使用的话,还需要信任存储),即不能从jar文件中读取它。

您应该移出keystore.jksjar,并更新server.ssl.key-store其在文件系统中的位置。

2020-05-30