Как настроить альтернативные свойства SSL для подключения к Spring Boot Admin? - PullRequest
0 голосов
/ 07 февраля 2019

Есть ли способ настроить клиент Eureka для использования другого хранилища ключей \ хранилища доверенных сертификатов, чем встроенный tomcat с пружинной загрузкой?ИЛИ Есть ли способ отключить проверку сертификата на сервере SBA?

У меня есть ситуация, когда у меня есть кластер микросервисов на основе весенней загрузки на нескольких виртуальных машинах.Все микросервисы, включая управление бэкэндом, такие как SBA и сервер Eureka, защищены с помощью HTTPS и типовой конфигурации SSL-сертификата при начальной загрузке.Для этих служб я использую самозаверяющий CA для создания сертификатов для каждой машины.Единственным исключением является служба «шлюз», которая передает API через наш веб-клиент.Эта служба настроена с сертификатом, подписанным реальным центром сертификации, поскольку это единственная общедоступная служба

Кстати, моя служба «шлюза» не может подключиться к серверу SBA, я вижу прокруткуОшибки, связанные с SSL, жалуются на то, что имя хоста клиента не соответствует никаким альтернативным именам в его сертификате.Это связано с тем, что он представляет свой открытый сертификат SBA, который не совпадает с внутренним именем хоста, из которого исходит запрос.

Мои службы используют Netflix Eureka и обнаружение служб.

РЕДАКТИРОВАТЬ:Добавление трассировки стека с SBA-сервера:

2019-02-06 21:34:30 [reactor-http-epoll-3] ERROR r.n.http.client.HttpClientConnect - [id: 0x5844260b, L:/172.17.0.5:40928 - R:myhost.mydomain.com/172.xxx.xxx.xxx:443] The connection observed an error
javax.net.ssl.SSLHandshakeException: General SSLEngine problem
        at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1521)
        at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:528)
        at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:802)
        at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:766)
        at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
        at io.netty.handler.ssl.SslHandler$SslEngineType$3.unwrap(SslHandler.java:294)
        at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1297)
        at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1199)
        at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1243)
        at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
        at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
        at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:382)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:335)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
        at java.lang.Thread.run(Thread.java:748)
Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1709)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:318)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
        at sun.security.ssl.Handshaker$1.run(Handshaker.java:970)
        at sun.security.ssl.Handshaker$1.run(Handshaker.java:967)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1459)
        at io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1460)
        at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1365)
        ... 19 common frames omitted
Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching myhost.mydomain.com found.
        at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:214)
        at sun.security.util.HostnameChecker.match(HostnameChecker.java:96)
        at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)
        at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:252)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1626)
        ... 27 common frames omitted

РЕДАКТИРОВАТЬ: При дальнейшей проверке у меня неправильная последовательность этой проблемы.Ошибка SSL не возникает, когда шлюз пытается зарегистрироваться в SBA, он фактически регистрируется нормально, ошибка SSL возникает, когда SBA пытается связаться с исполнительным механизмом на шлюзе.

Так что я думаю, что обновленный вопрос немного сложнее: есть ли способ настроить привод с другим хранилищем ключей / хранилищем доверенных сертификатов.Кроме того, есть ли способ открыть Actuator в Zuul только для соединений на бэкэнде, таких как SBA, а не для пользователей на стороне public / client?

...