Я пытаюсь использовать Vert.x Web для связи с клиентом по HTTPS. Я могу получить доступ к своей службе REST из браузера, но при запуске сервера и тестовой программы возникает следующая ошибка:
I/O Failure: Received fatal alert: handshake_failure
Мне кажется, я понимаю, почему происходит сбой, потому что я запустил оба приложения (моя клиентская программа - это Java-приложение, использующее OkHTTP), используя опцию -Djavax.net.debug = ssl: handshake: verbose. При попытке доступа к службе REST из моего тестового клиента сервер выдает следующее сообщение об отладке:
...snip...
%% Initialized: [Session-2, SSL_NULL_WITH_NULL_NULL]
vert.x-eventloop-thread-1, fatal error: 40: no cipher suites in common
javax.net.ssl.SSLHandshakeException: no cipher suites in common
%% Invalidated: [Session-2, SSL_NULL_WITH_NULL_NULL]
vert.x-eventloop-thread-1, SEND TLSv1 ALERT: fatal, description = handshake_failure
vert.x-eventloop-thread-1, WRITE: TLSv1 Alert, length = 2
vert.x-eventloop-thread-1, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: no cipher suites in common
vert.x-eventloop-thread-1, called closeOutbound()
vert.x-eventloop-thread-1, closeOutboundInternal()
vert.x-eventloop-thread-1, called closeInbound()
...snip...
Я понимаю, что две JVM должны иметь общий набор шифров до того, как рукопожатие сработает. Мой сервер, согласно выводу отладки, не отображает список доступных наборов. В нем перечислены несколько недоступных и отключенных наборов, но я не вижу список доступных наборов. С другой стороны, клиент отправляет серверу следующие наборы:
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA]
Мне нужно сделать один из этих наборов доступным для моего сервера Vert.x. К сожалению, просматривая документацию Vert.x, я не вижу ничего, что предоставило бы какую-либо информацию о том, как это сделать.
Есть ли способ предоставить серверу Vert.x набор шифров, который можно использовать с моим клиентом?