Jenkins "не удалось найти допустимый путь сертификации к запрашиваемой цели" при импорте репозитория Git

Я пытаюсь создать репозиторий Git из Jenkins, используя плагин Jenkins Git на моем ноутбуке. Репозиторий Git находится на доверенном сервере компании, который имеет самозаверяющие сертификаты. При указании URL я всегда получаю сообщение об ошибке:

Failed to connect to repository : sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target

Я понимаю, что эта ошибка появляется из-за самозаверяющих сертификатов, но сервер принадлежит моей компании и подписан уполномоченным органом.

Я также попытался импортировать тот же репо с другого ноутбука, используя самоподписанный, и продолжал получать ту же ошибку.

Любая помощь будет оценена

Ответы

Ответ 1

Перейдите → Управление Jenkins → Настройка глобальной безопасности → Диспетчер плагинов и установите флажок Использовать браузер для загрузки метаданных.

Это решит проблему.

Ответ 2

Эта ошибка является общим сообщением об ошибке, сообщенным виртуальной машиной Java. Это вызвано тем, что среда Java не имеет информации о сервере HTTPS, чтобы убедиться, что это действительный веб-сайт. Иногда сертификат предоставляется внутренним корневым центром сертификации или является самоподписанным сертификатом. Иногда это может смутить JVM, поскольку он не является одним из тех, кто доверяет "Java", который может предоставить эти сертификаты.

Поскольку мы знаем, что certififcate является "действительным", мы можем импортировать этот сертификат непосредственно в JVM. При этом мы сообщаем JVM, что это "доверенный" сертификат и "игнорировать" любые проблемы с ним.

Вам нужно будет добавить сертификат в файл сертификата Java. Для машины Debian/Ubuntu Linux, которая обычно находится здесь:

$JAVA_HOME/jre/lib/security/cacerts

Однако вы не хотите добавлять его в хранилище JRE cacert, потому что оно будет перезаписано/переписано JRE, поэтому лучше всего дублировать этот файл для Jenkins.

  • $JAVA_HOME - Это должно быть место, где находится ваш текущий java-дом. Если у вас установлена только среда Java Runtime Environment (JRE), вы можете заменить $JAVA_HOME/jre $JRE_HOME.

  • $ALIAS Это может быть любое значение. Это значение отличает этот сертификат от других. Примером может быть "git-repo" или "сервер артефактов".

  • $JENKINS_HOME - Это путь к вашему дому Дженкинса. Часто /var/lib/jenkins.

Вы можете импортировать сертификат в свой файл JVM cacerts, используя следующие команды. - У твоего мастера Дженкинса. Получите сертификат, скопируйте хранилище JVM для Jenkins, импортируйте сертификат в хранилище ключей, добавьте доверенное хранилище ключей в параметры запуска Jenkins и перезапустите Jenkins.

# Import certificate
openssl s_client -showcerts -connect https://your-target-server\
< /dev/null 2> /dev/null | openssl x509 -outform PEM > ~/root_ca.pem

# Duplicate Java Keystore file and move into Jenkins...
mkdir $JENKINS_HOME/keystore/
cp $JAVA_HOME/jre/lib/security/cacerts $JENKINS_HOME/keystore/

# Add Certificate to Keystore
keytool -import -alias $ALIAS -keystore $JENKINS_HOME/keystore/cacerts -file ~/root_ca.pem

# Add -Djavax.net.ssl.trustStore=$JENKINS_HOME/keystore/cacerts to the
# Jenkins startup parameters. For Debian/Ubuntu, this is /etc/default/jenkins
echo 'JAVA_ARGS="$JAVA_ARGS -Djavax.net.ssl.trustStore=$JENKINS_HOME/keystore/cacerts"'\
>> /etc/default/jenkins

sudo service jenkins restart

Справочная информация:

Ответ 3

По моему мнению, я понимаю, что этот Jenkins установлен на ящике разработчика.

Если безопасность не является основной проблемой в этом поле, вы можете в веб-интерфейсе Jenkins перейти на " Управление Jenkins" > " Управление плагинами" > вкладка " Доступно" и найти плагин "skip-certificate-check".

При установке этого вопроса проблема должна быть исправлена. Используйте этот плагин с осторожностью, так как он не рекомендуется с точки зрения безопасности.

Ответ 4

Java поставляется со списком доверенных корневых центров сертификации по умолчанию. Если он не может найти путь к одному из этих доверенных центров сертификации, он не будет доверять сертификату.

Похоже, сервер, к которому вы пытаетесь подключиться, использует сертификат, подписанный внутренним центром сертификации. Это типично для внутренних серверов. Вы не захотите платить за сертификат, если это не внешняя сторона.

Вы можете добавить корневой центр сертификации своей компании в java, используя команду keytool. Затем вы сможете подключать ssl к любому сертификату, подписанному этим корневым сертификатом.

Ответ 5

Управление Jenkins → Управление плагинами → Менеджер плагинов → Дополнительно

измените "Обновление сайта", чтобы использовать http, а не https. это решает мою проблему. enter image description here

Ответ 6

Это версия Java - проблема сертификации Jenkins между вашей системой Java и версиями Jenkins Java.

Измените путь Java, на который ссылается Jenkins.

  1. Перейдите в свою домашнюю папку Jenkins и откройте файл jenkins.xml: %Jenkins_Home%/jenkins.xml

  2. Вы найдете тег %BASE%\jre\bin\java. Замените тег на установленный системой путь Java, например C:\Program Files (x86)\Java\jre1.8.0_144\bin\java

Теперь у вас не должно быть проблемы.

пример

Ответ 7

в то время как вышеупомянутый ответ, как правило, правильный, это может быть также связано с сертификатом с истекшим сроком действия в цепочке (серверный сертификат, промежуточный, корневой). Только что получил ту же ошибку, и мой сертификат сервера истек.

Ответ 8

Для Jeinkins в Windows

После установки автономной версии Java на моем ПК указанная ошибка исчезла.

Если быть точным, я установил JDK 8u162 (Java SE Development Kit 8u162) из Java SE Development Kit 8 Загрузки

Ответ 9

Я только что запустил jenkins.war с jdk cacerts как обходной java -Djavax.net.ssl.trustStore = "/scratch/install/jdk1.8.0_102/jre/lib/security/cacerts" -jar jenkins.war &

Ответ 10

Добавьте Root CA (GlobalSign.cer), загруженный из вашего браузера в JAVA_HOME/jre/lib/security/cacerts.

Вы можете использовать инструмент "Инструмент Keystore explorer", чтобы добавить Root CA в Java cacerts. Проверьте эту ссылку для последовательности шагов, чтобы добавить Root CA в Java cacerts:

После успешного добавления Root CA в сертификат Java перезапустите Jenkins.

Ответ 11

Для более новой версии Jenkins Перейдите на Jenkins--> Управление Jenkins--> Настроить глобальную безопасность, отметьте опцию Использовать браузер для загрузки метаданных [по умолчанию не отмечено] и Перезапустить Jenkins.

Ответ 12

перейдите в C:\Program Files\Java\jdk1.8.0_45\jre\lib\security

cmd C:\Program Files\Java\jdk1.8.0_45\jre\lib\security

после этого дайте java -jar jenkins.war решить проблему с сертификатом