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