Я пытаюсь запустить и протестировать приложение Spring Boot, которое я упаковал в zip-файл и распаковал на виртуальной машине Linux. Почтовый индекс содержит все, что нужно приложению (по крайней мере, насколько мне известно). Когда я пытаюсь выполнить приложение, оно запускается, но быстро завершается сбоем, поскольку не может загрузить хранилище ключей, необходимое для безопасной связи 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'
"Runtime" Spring Boot, очевидно, видит и получает доступ к config
каталог, но, кажется, не видит каталог keystore
, содержащийся внутри. Нужно ли указывать пути по-разному в application.yml или мне нужно поместить файлы хранилища ключей в другое место?
Примечание : я могу запустить это приложение с 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 уже несколько месяцев). Они копируются как часть почтового дистрибутива. Может, мне чего-то не хватает?
Я также немного обеспокоен несколькими другими сообщениями в журнале. Я не уверен, что они связаны, но кажется, что они могут быть:
[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
Я не помню, чтобы видел их раньше.