Я пытаюсь заставить библиотеку Apache Commons HttpClient (версия 3.1) игнорировать тот факт, что сертификат сервера не может быть установлен как доверенный (о чем свидетельствует выброшенное исключение javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
).
Я сделалfind Установите соединение с сервером HTTPS из Java и проигнорируйте действительность сертификата безопасности , а также Отключите проверку сертификата в Java-соединениях SSL , но принятый ответ для первогоHttpClient 4.0 (к сожалению, я не могу обновить, , если кто-то не может указать мне, как использовать две разные версии одной и той же библиотеки в одном проекте), хотя у него есть другой ответ с небольшимбольше, чем мертвая ссылка, которая предположительно пошла на решение 3.x .Код на второй странице, кажется, не имеет никакого эффекта, когда я использую его слегка скорректированную версию (в основном, объявление классов старым способом, а не использование анонимных встроенных, а также применение к TLS
в дополнение кSSL
, с использованием SSL
для фабрики сокетов HTTPS по умолчанию, как это сделано в примере кода).
Желательно, чтобы я хотел что-то, имеющее весь поток / экземпляр, чтобы любое HttpClient
экземпляр (и / или связанные классы), создаваемый из моего кода сервлета ( не другой сервлет, работающий в том же контейнере), будет использовать логику проверки сертификата lax, но на этом этапе яЯ начинаю чувствовать, что что-то будет делать, пока он принимает самозаверяющий сертификат как действительный.
Да, я знаю, что есть последствия для безопасности, но единственная причина, по которой мне это вообще нужно, этоцели тестирования.Идея состоит в том, чтобы реализовать параметр конфигурации, который контролирует, являются ли обычно ненадежные сертификаты доверенными или нет, и оставить его по умолчанию «не доверять ненадежным сертификатам сервера».Таким образом, его можно легко включить или отключить в процессе разработки, но выполнение этого в процессе производства потребует усилий.