[HowTo]: Jenkins LDAP Plugin и SSLHandshakeException

java-sslС проблемой SSLHandshakeException столкнулся в контексте настройки Jenkins LDAP Plugin’а, хотя, вероятно данная HowTo’шка может быть полезна и для других контекстов, где происходит взаимодействие Java-приложения с другими сервисами по HTTPS.

Проблема

При попытке сконфигурировать Jenkins LDAP Plugin получили ошибку:

jankins-ldap-unable_to_find_valid_certification_path_to_requested_target

Контекст

Docker-контейнер с Jenkins (https://hub.docker.com/_/jenkins/) или CentOS 6 сервер с установленным на нём Jenkins.

Решение

Заходим на сервер с Java-приложением

Заходим в контейнер с Jenkins (либо заходим на сервер под администратором, где установлен Jenkins):

Устанавливаем InstallCert.java

Скачиваем InstallCert.java:

Компилируем:

В Jenkins-контейнере javac уже установлен, если же компилятор отсутствует, возможно вам стоит установить пакет java-1.8.0-openjdk-devel

Запускаем InstallCert.java

Запускаем утилиту, вводим 1 и жмём Enter:

В консоли можно увидеть что-то вроде:

Если ещё раз запустить ту же команду, то увидуим
No errors, certificate is already trusted:

Копируем получившийся файл туда, где его найдёт Java

Копируем только что сгенрённый файл в $JAVA_HOME/jre/lib/security/ (это в контейнере Jenkins):

Для CentOS $JAVA_HOME оказался другим:

Перезапускаем Java-приложение

После этого Jenkins перестаёт ругаться на SSLHandshakeException

jenkins-ldap-success

Замечание

Это решение не является единственным, например, можно сертификаты внешних серверов разместить в системных настройках SSL, минуя Java.

Ссылки