【发布时间】:2020-02-19 18:28:20
【问题描述】:
我正在尝试运行和测试已打包成 zip 文件并在 Linux VM 上解压的 Spring Boot 应用程序。 zip 包含应用程序所需的所有内容(至少据我所知)。当我尝试执行应用程序时,它会启动但很快就会失败,因为它无法加载 SSH/TLS 安全通信所需的密钥库。
我的 application.yml 中有以下内容:
server:
port: 8091
ssl:
enabled: true
protocol: TLS
trust-store-type: JKS
trust-store: classpath:keystore/server.keystore
trust-store-password: <hidden>
key-store-type: JKS
key-store: classpath:keystore/ra/server.keystore
key-store-password: <hidden>
测试系统上的目录结构如下:
[centos@route-assessor route-assessor]$ ls -R
.:
config elastic-apm-agent-1.10.0.jar lib run-route-assessor.sh services-0.0.1-SNAPSHOT.jar
./config:
application.yml keystore log4j2.xml
./config/keystore:
mp ra rg server.keystore
./config/keystore/mp:
server.keystore
./config/keystore/ra:
server.keystore
./config/keystore/rg:
server.keystore
./lib
<dependency jars>
这里是抛出的异常:
[2019-10-23 13:21:31.419] main WARN : context.AnnotationConfigServletWebServerApplicationContext:557 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Could not load key store 'classpath:keystore/server.keystore'
Spring Boot“运行时”显然可以看到并访问config 目录,但似乎看不到其中包含的keystore 目录。我需要在 application.yml 中指定不同的路径还是需要将密钥库文件放在其他地方?
注意:我可以使用 eclipse 中配置的 application.yml 运行这个应用程序,没有任何问题。当然,对于这种情况,所有资源都位于src/main/resources。
更新:
根据@borban 的建议,我修改了application.yml 如下:
key-store: file:config/keystore/ra/server.keystore
trust-store: file:config/keystore/server.keystore
这似乎解决了一个问题,但我还没有走出困境:
[2019-10-23 15:07:17.671] main ERROR: boot.SpringApplication:821 - Application run failed
org.springframework.boot.web.server.WebServerException: Unable to start embedded Jetty server
...
Caused by: java.lang.IllegalStateException: no valid keystore
...
据我所知,我的密钥库文件是有效且正确的(我已经在我的 Windows 开发盒上使用它们几个月了)。它们作为 zip 分发的一部分被复制。有什么可能是我遗漏的吗?
我也有点担心日志中的其他一些消息。我不确定它们是否相关,但似乎它们可能是:
[2019-10-23 15:07:10.153] main WARN : resource.Resource:126 - java.lang.IllegalArgumentException: URI is not hierarchical
[2019-10-23 15:07:10.155] main WARN : resource.Resource:126 - java.lang.IllegalArgumentException: URI is not hierarchical
我不记得以前见过他们。
【问题讨论】:
标签: spring-boot