Проверка сервера клиентом и наоборот при утсановлении https соединения vertx
Прошу знающих людей объяснить мне некоторые вещи, связаныне с ssl в фреймфорке Vertx.
Я хочу установить https соединение между клиентом и сервером, да ещё такое, чтобы не только сервер проверял открытый ключ клиента, но и чтобы клиент проверял сервер.
С первой часью я справился легко, добавив на сервер закрытый ключ, на клиент открытый в опицях, так же предварительно указав там, что соединение будет ssl. Vertx стал автоматически проверять публичый ключ клиента.
А вот со второй частью я уже не могу справиться т.к. добавив свой приватный ключ клиенту, а публичный отдав серверу, и так же настроив всё в опциях, клиент не првоеряет сервер. Пробовал подменять ключ на неверный у сервера, клиенту вообще пофиг.
Так же есть свойство в опицях, чтобы установить првоерку хоста. Если я ставлю эту опцию, то вообще соединение не устанавливается.
Скажите, пожалуйста, связана ли проверка хоста у клиента в vertx с проверкой публичного ключа с севрера и как вообще можно организовать данную проверку.
Опции сервера:
new HttpServerOptions()
.setSsl(true)
.setKeyStoreOption(
new JksOptions()
...
)
.setTrustStoreOption(
new JksOptions()
...
)
.setPort(port)
.setHost(host);
Опции клиента:
new HttpClientoptions()
.setSsl(true)
.setTrustStoreOption(
new JksOptions()
...
)
.setKeyStoreOption(
new JksOptions()
...
)
.setVerifyHost(true)
.setkeepAlive(true);
Ответы (1 шт):
Похоже опции были заданы мной не совсем верно при настройке клиента и сервера.
Исправленные
Опции сервера:
new HttpServerOptions()
.setSsl(true)
.setKeyStoreOption(
new JksOptions()
...
)
.setTrustStoreOption(
new JksOptions()
...
)
.setClientAuth(ClientAuth.REQUIRED)
.setPort(port)
.setHost(host);
Опции клиента:
new HttpClientoptions()
.setSsl(true)
.setTrustStoreOption(
new JksOptions()
...
)
.setKeyStoreOption(
new JksOptions()
...
)
.setVerifyHost(false)
.setkeepAlive(true);
Добавил ещё один пункт .setClientAuth(ClientAuth.REQUIRED) и проверка работает.
Не до конца уверен, но по крайней мере при подмене ключей оно хотя бы ругается и не даёт установить соединение