Мое приложение - это форма "веб-скребка", которая загружает HTML с нужной страницы ввода, используя библиотеку Java Jsoup . Недавно я обновил платформу своего приложения с Java 8 до Java 11. С этим обновлением я получил несколько отчетов от моих клиентов, в которых говорилось, что они получают исключения SSLHandshakeException при попытке загрузить содержимое HTML определенных веб-страниц. Веб-страницы, на которых они появляются, варьируются от устройства к устройству, и на некоторых устройствах мои клиенты вообще не могут загружать веб-страницы (ни http: //, ни https: // веб-страницы).
Я имею попытался решить эту проблему несколькими способами, но безрезультатно:
- Замена файла CACERT среды выполнения Java 11 файлом CACERT среды выполнения Java 8
- Создание собственного получателя сертификата SSL который принимает все сертификаты SSL независимо от действительности (я знаю, что это плохо для производственного кода, но это было только для целей тестирования) - см. Доверие всем сертификатам с использованием HttpClient через HTTPS
В На данный момент я не совсем уверен, какие варианты выбрать, так как у меня ограниченные знания SSL, TLS и HTTPS. Эти ошибки никогда не возникали в Java 8, и все, что раньше работало нормально до обновления до Java 11.
Насколько я понимаю, единственное, что Java 11 изменилось в SSL, это обновление до TLS 1.3 в то время как предыдущая версия Java использовала TLS 1.2.
Следовательно, я хотел бы заставить Java 11 использовать TLS 1.2, а не TLS 1.3, поскольку я считаю, что это является причиной исключений SSLHandshakeException. Как мне go сделать это?