Ответ 1
Перейдите → Управление Jenkins → Настройка глобальной безопасности → Диспетчер плагинов и установите флажок Использовать браузер для загрузки метаданных.
Это решит проблему.
Я пытаюсь создать репозиторий 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
Я понимаю, что эта ошибка появляется из-за самозаверяющих сертификатов, но сервер принадлежит моей компании и подписан уполномоченным органом.
Я также попытался импортировать тот же репо с другого ноутбука, используя самоподписанный, и продолжал получать ту же ошибку.
Любая помощь будет оценена
Перейдите → Управление Jenkins → Настройка глобальной безопасности → Диспетчер плагинов и установите флажок Использовать браузер для загрузки метаданных.
Это решит проблему.
Эта ошибка является общим сообщением об ошибке, сообщенным виртуальной машиной 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
Справочная информация:
По моему мнению, я понимаю, что этот Jenkins установлен на ящике разработчика.
Если безопасность не является основной проблемой в этом поле, вы можете в веб-интерфейсе Jenkins перейти на " Управление Jenkins" > " Управление плагинами" > вкладка " Доступно" и найти плагин "skip-certificate-check".
При установке этого вопроса проблема должна быть исправлена. Используйте этот плагин с осторожностью, так как он не рекомендуется с точки зрения безопасности.
Java поставляется со списком доверенных корневых центров сертификации по умолчанию. Если он не может найти путь к одному из этих доверенных центров сертификации, он не будет доверять сертификату.
Похоже, сервер, к которому вы пытаетесь подключиться, использует сертификат, подписанный внутренним центром сертификации. Это типично для внутренних серверов. Вы не захотите платить за сертификат, если это не внешняя сторона.
Вы можете добавить корневой центр сертификации своей компании в java, используя команду keytool. Затем вы сможете подключать ssl к любому сертификату, подписанному этим корневым сертификатом.
Управление Jenkins → Управление плагинами → Менеджер плагинов → Дополнительно
измените "Обновление сайта", чтобы использовать http, а не https. это решает мою проблему.
Это версия Java - проблема сертификации Jenkins между вашей системой Java и версиями Jenkins Java.
Измените путь Java, на который ссылается Jenkins.
Перейдите в свою домашнюю папку Jenkins и откройте файл jenkins.xml: %Jenkins_Home%/jenkins.xml
Вы найдете тег %BASE%\jre\bin\java
. Замените тег на установленный системой путь Java, например C:\Program Files (x86)\Java\jre1.8.0_144\bin\java
Теперь у вас не должно быть проблемы.
в то время как вышеупомянутый ответ, как правило, правильный, это может быть также связано с сертификатом с истекшим сроком действия в цепочке (серверный сертификат, промежуточный, корневой). Только что получил ту же ошибку, и мой сертификат сервера истек.
Для Jeinkins в Windows
После установки автономной версии Java на моем ПК указанная ошибка исчезла.
Если быть точным, я установил JDK 8u162 (Java SE Development Kit 8u162) из Java SE Development Kit 8 Загрузки
Я только что запустил jenkins.war с jdk cacerts как обходной java -Djavax.net.ssl.trustStore = "/scratch/install/jdk1.8.0_102/jre/lib/security/cacerts" -jar jenkins.war &
Добавьте Root CA (GlobalSign.cer), загруженный из вашего браузера в JAVA_HOME/jre/lib/security/cacerts.
Вы можете использовать инструмент "Инструмент Keystore explorer", чтобы добавить Root CA в Java cacerts. Проверьте эту ссылку для последовательности шагов, чтобы добавить Root CA в Java cacerts:
После успешного добавления Root CA в сертификат Java перезапустите Jenkins.
Для более новой версии Jenkins Перейдите на Jenkins--> Управление Jenkins--> Настроить глобальную безопасность, отметьте опцию Использовать браузер для загрузки метаданных [по умолчанию не отмечено] и Перезапустить Jenkins.
перейдите в 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 решить проблему с сертификатом