parent
20c66fdfee
commit
8857afae0b
|
@ -0,0 +1,61 @@
|
||||||
|
## Mettre à jour les certificats du keystore Jenkins
|
||||||
|
|
||||||
|
Dans un pipeline, si des erreurs de ce type apparaissent:
|
||||||
|
|
||||||
|
```
|
||||||
|
Attempting to resolve master from remote references...
|
||||||
|
> git --version # timeout=10
|
||||||
|
> git --version # 'git version 2.18.4'
|
||||||
|
using GIT_ASKPASS to set credentials Identifiants Jenkins Forge
|
||||||
|
> git ls-remote -h -- https://forge.cadoles.com/Cadoles/Jenkins.git # timeout=10
|
||||||
|
ERROR: Checkout failed
|
||||||
|
hudson.plugins.git.GitException: Command "git ls-remote -h -- https://forge.cadoles.com/Cadoles/Jenkins.git" returned status code 128:
|
||||||
|
stdout:
|
||||||
|
stderr: fatal: unable to access 'https://forge.cadoles.com/Cadoles/Jenkins.git/': SSL certificate problem: certificate has expired
|
||||||
|
|
||||||
|
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2450)
|
||||||
|
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:2051)
|
||||||
|
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1951)
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
Il est fort probable que le keystore java n'ait pas le certificat de la forge à jour (ce qui est probable avec LetsEncrypt).
|
||||||
|
|
||||||
|
Dans ce cas:
|
||||||
|
|
||||||
|
1. Se connecter sur la machine Jenkins en SSH avec le compte `root`
|
||||||
|
2. Si le script `/root/install-java-cert.sh` n'existe pas encore, le créer avec le contenu suivant:
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -xe
|
||||||
|
|
||||||
|
DOMAIN=$1
|
||||||
|
JENKINS_HOME=/var/lib/jenkins
|
||||||
|
JAVA_HOME=/usr/lib/jvm/default-jvm
|
||||||
|
|
||||||
|
if [ -z "$DOMAIN" ]; then
|
||||||
|
echo "You must specify the domain as first argument"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Import certificate
|
||||||
|
openssl s_client -showcerts -connect "$DOMAIN" < /dev/null 2> /dev/null | openssl x509 -outform PEM > ~/root_ca.pem
|
||||||
|
|
||||||
|
# Duplicate Java Keystore file and move into Jenkins...
|
||||||
|
mkdir -p $JENKINS_HOME/keystore/
|
||||||
|
cp $JAVA_HOME/jre/lib/security/cacerts $JENKINS_HOME/keystore/
|
||||||
|
|
||||||
|
# Add Certificate to Keystore
|
||||||
|
keytool -import -alias $DOMAIN -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
|
||||||
|
mkdir -p /etc/default
|
||||||
|
echo 'JAVA_ARGS="$JAVA_ARGS -Djavax.net.ssl.trustStore=$JENKINS_HOME/keystore/cacerts"' >> /etc/default/jenkins
|
||||||
|
|
||||||
|
rc-service jenkins restart
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Lancer le script `/root/install-java-cert.sh forge.cadoles.com:443`. Le mot de passe par défaut du keystore est `changeit`.
|
Loading…
Reference in New Issue