Spring Boot / Jetty + SSL: хранилище ключей не найдено (FileNotFoundException) - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь включить SSL со встроенным причалом в приложении Spring Boot.

Spring Boot Starter Версия: 2.1.0.RELEASE

Моя конфигурация:

Я создал хранилище ключей с помощью следующей команды:

keytool -genkey -keyalg RSA -alias webapp -keystore keystore.jks -storepass password -keysize 2048

Полученный файл keystore.jks был помещен в src/main/resources/ssl.

В руководствах в основном говорится, что ссылка на это хранилище ключей в приложении .yaml должно быть достаточно, чтобы «заставить его работать»:

server:
    port: 9292
    servlet:
        context-path: /
    ssl:
        key-store: classpath:keystore.jks
        key-store-password: password
        key-alias: webapp
        key-store-type: JKS

Ошибка:

Когда я пытаюсь запустить приложение, происходит сбой:

Caused by: org.springframework.boot.web.server.WebServerException: Could not find key store 'classpath:keystore.jks'
at org.springframework.boot.web.embedded.jetty.SslServerCustomizer.configureSslKeyStore(SslServerCustomizer.java:195) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.boot.web.embedded.jetty.SslServerCustomizer.configureSsl(SslServerCustomizer.java:164) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.boot.web.embedded.jetty.SslServerCustomizer.customize(SslServerCustomizer.java:73) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory.customizeSsl(JettyServletWebServerFactory.java:195) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory.getWebServer(JettyServletWebServerFactory.java:145) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:179) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:152) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
... 13 common frames omitted
    Caused by: java.io.FileNotFoundException: class path resource [keystore.jks] cannot be resolved to URL because it does not exist
at org.springframework.util.ResourceUtils.getURL(ResourceUtils.java:137) ~[spring-core-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.boot.web.embedded.jetty.SslServerCustomizer.configureSslKeyStore(SslServerCustomizer.java:190) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
... 19 common frames omitted

Когда я заглядываю в целевой каталог maven, то keystore.jks помещается в классы / ssl, поэтому он должен быть в пути к классам, верно?

Может кто-нибудь указать, чтоЯ скучаю?

Редактировать:

Как ни странно, перемещение keystore.jks в src/main/resources, похоже, решает проблему.Почему пристань может найти хранилище ключей там, а не в подкаталоге src/main/resources/ssl?

...