Spring Конфигурация загрузки ssl после обновления до 1.4.0 с версии 1.3.x

У меня возникла проблема с конфигурацией ssl, моя конфигурация такова:

server.port=8449
# self signed cert with CN=localhost used for https method tests
server.ssl.key-store=keystore.p12
server.ssl.key-password=password
server.ssl.key-alias=some-alias
server.ssl.key-store-type=PKCS12

При использовании версии 1.3.7 для загрузки spring все работает. Если с клиентской стороны обновлен до 1.4.0, я получаю:

javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:287)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255)
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:700)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:696)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448)

И вызов ssl-порта из результатов chrome:

Клиент и сервер не поддерживают общую версию протокола SSL или набор шифров. Вероятно, это вызвано тем, что серверу нужен RC4, который больше не считается безопасным.

Аналогичная ошибка и от Firefox.

Как я уже сказал, в конфигурации есть только spring версия для загрузки. Я что-то упустил в конфигурации, чтобы его можно было использовать с более новой версией spring boot?

Спасибо заранее Ура!

P.S. Я не очень хорошо разбираюсь в связанных с ssl темах, поэтому, пожалуйста, попробуйте объяснить это несколько проще.

Ответ 1

Мне удалось решить эту проблему благодаря этому Boot Tomcat SSLsample, предоставленному Andy

server.port=8449
# self signed cert with CN=localhost used for https method tests
server.ssl.key-store=keystore.p12
server.ssl.key-password=password
server.ssl.key-alias=some-alias
server.ssl.key-store-type=PKCS12

Мое предположение (я мог ошибаться в этом) заключается в том, что Tomcat 8.5.4 требует, чтобы указанный server.ssl.key-store-password=password ему не хватило, указав только server.ssl.key-password, поэтому после обновления конфигурации я придумал что-то вроде этого:

server.port=8449
# self signed cert with CN=localhost used for https method tests
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=changeit
server.ssl.key-alias=some-alias
server.ssl.key-password=changeit
server.ssl.key-store-type=PKCS12

И теперь он работает так, как предполагалось:) Надеюсь, этот ответ поможет кому-то другому.

P.S. Да, я знаю, что плохо использовать один и тот же пароль для определенного ключа и общего хранилища, но это всего лишь хранилище тестовых ключей.

Ответ 2

Для меня все работало на моей локальной машине, но когда я попытался запустить сервер загрузки Spring на моем Linux-сервере (Amazon AWS EC2), я получил ту же ошибку. Я не получил эту ошибку при использовании Spring Boot 1.3.x.

Мне удалось решить эту проблему, установив Oracle JDK вместо открытого JDK, который был предварительно установлен на сервере.

Это руководство, которым я придерживался: https://gist.github.com/rtfpessoa/17752cbf7156bdf32c59