Я использую Play Framework 2.3.8 и у меня возникают проблемы с выполнением HTTPS-запросов к определенным хостам.В этом случае я не могу подключиться к хосту API Zendesk (xxxxx.zendesk.com) с помощью WS client .
. Первоначально получена ошибка:
Невозможно вызвать действие, в итоге возникла ошибка: java.net.ConnectException: исключение HostnameVerifier.
Это странно, потому что сертификат выглядит как файл, если я просматриваю его в браузере или через ssl s_client .Запись CN соответствует домену.
Если I отключить проверку имени хоста , я получаю сообщение об ошибке из Cloudflare с сообщением «Запрещено».Это в HTML, а не в JSON, что не соответствует ожиданиям.
Затем я попытался отправить тот же запрос с помощью Почтальон и curl .Запрос был выполнен успешно, и я получил ответ обратно в JSON.
Затем я использовал Charles Web Debugging Proxy для перехвата HTTPS-запросов из Play Framework и сравнения его с запросами, отправленными из Postman.Как ни странно, запросы выполнялись успешно, если Чарльз перехватывал запросы!Чарльз не пролил свет на проблему с сертификатом.
Я видел, как другие люди жаловались на подобные проблемы с Cloudflare, и в их случае оказалось, что их клиент не поддерживает TLS 1.2.Я проверил и запустил версию 1.8 JVM, которая поддерживает TLS 1.2 по умолчанию, и даже попытался принудительно использовать TLS 1.2 с помощью переменной конфигурации на всякий случай, и это не помогло.
Я полагаю, что есть некоторая проблема сSSL в используемой версии Play Framework.