J'essaye de construire un Git repo de Jenkins en utilisant le Jenkins Git Plugin sur mon ordinateur portable. Le référentiel Git réside sur le serveur de confiance de la société, doté de certificats auto-signés. En spécifiant l'URL, j'obtiens toujours une erreur:
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
Je comprends que cette erreur fait surface à cause de certificats auto-signés, mais le serveur appartient à mon entreprise et est signé par une autorité.
J'ai également essayé d'importer le même dépôt d'un autre ordinateur portable en utilisant l'auto-signature et je continue à avoir la même erreur.
Toute aide serait appréciée
Allez à -> Gérer Jenkins -> Configurer la sécurité globale -> Gestionnaire de plug-in .__ et cochez la case Utiliser le navigateur pour télécharger les métadonnées.
Cela résoudra le problème.
Cette erreur est un message d'erreur commun signalé par la machine virtuelle Java. Cela est dû au fait que l'environnement Java ne dispose pas d'informations sur le serveur HTTPS pour vérifier qu'il s'agit d'un site Web valide. Parfois, le certificat est fourni par une autorité de certification racine interne ou est un certificat auto-signé. Cela peut parfois dérouter la JVM car ce n’est pas l’un des éléments de la liste «de confiance» Java qui peut fournir ces certificats.
Parce que nous savons que le certificat est «valide», nous pouvons importer ce certificat directement dans la JVM. Ce faisant, nous disons à la JVM qu’il s’agit d’un certificat «de confiance» et «ignorons» tous les problèmes qu’il pose.
Vous devrez ajouter le certificat à votre fichier d'autorité de certification Java. Pour une machine Linux Debian/Ubuntu, cela se trouve généralement ici:
$Java_HOME/jre/lib/security/cacerts
Toutefois, vous ne souhaitez pas l'ajouter au fichier de clés JRE cacert car il sera écrasé/réécrit par l'environnement JRE. Il est donc préférable de dupliquer ce fichier pour Jenkins.
$Java_HOME
- Cela devrait être l'emplacement de votre maison Java actuelle. Si seul l'environnement d'exécution Java (JRE) est installé, vous pouvez remplacer $Java_HOME/jre
par le $JRE_HOME
.
$ALIAS
- Cela peut être n'importe quelle valeur. C'est une valeur de distinguer ce certificat des autres. Exemple: “git-repo” ou “serveur d'artefacts”.
$JENKINS_HOME
- C'est le chemin de votre maison Jenkins. Souvent /var/lib/jenkins
.
Vous pouvez importer le certificat dans votre fichier JVM cacerts en utilisant les commandes suivantes. - Dans ton maître Jenkins. Obtenez le certificat, copiez le magasin de clés JVM pour Jenkins, importez-le dans le magasin de clés, ajoutez le magasin de clés approuvé aux paramètres de démarrage de Jenkins et redémarrez 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
Aide de référence:
De la question, ma compréhension est que ce Jenkins est installé sur une boîte de développement.
Si la sécurité ne constitue pas une préoccupation essentielle dans cette zone, vous pouvez, dans l'interface Web de Jenkins, accéder à Gérer Jenkins> Gérer les plug-ins> onglet Available et rechercher "skip-certificate-check " brancher.
Lors de l'installation, le problème devrait être corrigé. Utilisez ce plugin avec prudence, car il n’est pas conseillé du point de vue de la sécurité.
Java est livré avec une liste par défaut d'autorités de certification racine de confiance. S'il ne peut pas trouver de chemin d'accès à l'une de ces autorités de certification, il ne fera pas confiance au certificat.
Il semble que le serveur auquel vous essayez de vous connecter utilise un certificat signé par une autorité de certification interne. C'est typique des serveurs internes. Vous ne voudriez pas payer pour un certificat s'il ne fait pas face à l'extérieur.
Vous pouvez ajouter l'autorité de certification racine de votre société à Java à l'aide de la commande keytool. Vous pourrez alors établir des connexions ssl avec n’importe quel certificat signé par ce certificat racine.
bien que la réponse ci-dessus soit généralement correcte, elle peut également être due à un certificat expiré dans la chaîne (cert. serveur, intermédiaire, racine). Je viens de recevoir la même erreur et mon certificat de serveur a expiré.
Ajoutez une autorité de certification racine (GlobalSign.cer) téléchargée depuis votre navigateur vers Java_HOME/jre/lib/security/cacerts.
Vous pouvez utiliser l'outil "Keystore Explorer" pour ajouter une autorité de certification racine à des cacerts Java. Cochez cette option link pour connaître la séquence des étapes à suivre pour ajouter une autorité de certification racine à des cacerts Java:
Après avoir ajouté avec succès l'autorité de certification racine au certificat Java, redémarrez Jenkins.
Je viens de lancer jenkins.war avec jdk cacerts comme solution palliativeJava -Djavax.net.ssl.trustStore = "/ scratch/install/jdk1.8.0_102/jre/lib/security/cacerts" -jar jenkins guerre &
Pour Jeinkins sur Windows
Après avoir installé une version Java autonome sur mon PC, l'erreur mentionnée a disparu.
Pour être précis, j'ai installé JDK 8u162 (Kit de développement Java SE 8u162) à partir de Kit de développement Java SE 8 Téléchargements