19 октября я обновился до OpenJDK Java 1.8.0_232, и моим процессам Java не удалось подключиться к службе, предоставляемой stunnel, используя сертификат сервера EC. У меня есть сертификат клиента EC, который я бы предоставил серверу, если первоначальное рукопожатие будет успешным, но оно не зашло так далеко.
Мне не удалось получить номер версии предыдущего версия Java, которая была запущена - у меня был длительный процесс на клиенте, который смог успешно подключиться к службе. Java была обновлена, но этот клиент не был перезапущен с момента обновления. Я перезапустил клиент, и он тоже начал давать сбой.
Я собираюсь начать читать объявление , чтобы посмотреть, есть ли там что-нибудь, что могло бы предложить "исправить"что-то, но я считаю, что все настроено правильно как на клиенте, так и на сервере. В настоящее время я думаю, что это ошибка в JVM.
Используя ssltest , я смог подтвердить, что могу предоставить рукопожатие с сервером, используя несколько наборов шифров при предоставлении правильного клиентасертификат, пока я использую Java 1.8.0_181 или Java 11.0.3 (это две версии, которые я случайно обнаружил на своем ноутбуке для тестирования). При использовании Java 1.8.0_232 не удается использовать те же файлы, командную строку и т. Д.
Кто-нибудь видел что-нибудь подобное?
ОБНОВЛЕНИЕ
Я скачал x86-64 OpenJDK версии 8u222 и 8u232 с здесь , и я могу подтвердить, что версия 8u222 будет подключаться, а 8u232 не будет подключаться.
UPDATE Понижение допредыдущая версия OpenJDK уже решила мою проблему. Я использую Debian Stretch, и мне удалось выполнить понижение с помощью этой команды:
$ sudo apt-get install openjdk-8-jdk-headless=8u222-b10-1~deb9u1 openjdk-8-jre-headless=8u222-b10-1~deb9u1
Обратите внимание, что у меня установлены только «безголовые» пакеты, поэтому я понизил только «безголовые» пакеты.
ОБНОВЛЕНИЕ Здесь я могу подтвердить, что сертификат клиента - красная сельдь. Я ослабил требования на моем сервере, чтобы он не требовал сертификата клиента, и первоначальное рукопожатие TLS по-прежнему не удается. Я пытаюсь сузить это до самого простого тестового случая, который я могу получить.
ОБНОВЛЕНИЕ Все еще пытаюсь диагностировать проблему здесь. У меня есть тестовый сервер, на котором я могу запустить его в различных конфигурациях и посмотреть, что произойдет. Я определил, что, хотя Java 8u222 поддерживает кривую secp256k1
, Java 8u232 - нет, и я получаю ошибку рукопожатия.