From 544d70b830a7bd5840d194f465239100f41ecd2b Mon Sep 17 00:00:00 2001 From: emorino Date: Fri, 28 Dec 2018 16:09:56 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20configuration=20vhost=20https=20reserve?= =?UTF-8?q?=20proxy=20+=20ren=C3=A9ger=20un=20"crumb"=20+=20solution=20err?= =?UTF-8?q?eur=20configuration=20reserve=20proxy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoJenkins.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/HowtoJenkins.md b/HowtoJenkins.md index b0efff31..8c68e537 100644 --- a/HowtoJenkins.md +++ b/HowtoJenkins.md @@ -68,3 +68,83 @@ Pour le que dossier *tmp* soit vider au redémarrage de la machine, comme un vra ~~~ tmpfs /var/lib/jenkins/tmp tmpfs defaults,nosuid,nodev,size=1024m 0 0 ~~~ + +## Configuration Reverse proxy Apache en https + +Voici une configuration d'un VirtualHost Apache pour proxyfié Jenkins en https : + +~~~ + + ServerName jenkins.efashion-paris.com + Redirect permanent / https://jenkins.efashion-paris.com/ + + + ServerName jenkins.efashion-paris.com + ServerAdmin webmaster@localhost + + + Order deny,allow + Allow from all + + + ProxyRequests Off + ProxyPreserveHost On + AllowEncodedSlashes NoDecode + + + ProxyPass http://localhost:8080/ nocanon retry=0 + ProxyPassReverse http://localhost:8080/ + RequestHeader set X-Forwarded-Proto "https" + RequestHeader set X-Forwarded-Port "443" + + + CustomLog /var/log/apache2/access_jenkins.log combined + ErrorLog /var/log/apache2/error_jenkins.log + + SSLEngine on + SSLProtocol all -SSLv2 -SSLv3 + SSLCertificateFile /etc/ssl/cert/foo.crt + SSLCertificateKeyFile /etc/ssl/private/bar.key + SSLCertificateChainFile /etc/ssl/cert/DigiCertCA.crt + + +~~~ + + +## Générer un "Crumb" pour la protection CSRF (Cross Site Request Forgery) de Jenkins + +Depuis Jenkins 2.X la protection CSRF est activé par défaut. Si on administre Jenkins en passant par un reverse proxy Apache ou Nginx, on doit générer un Crumb avec l'utilisateur admin de Jenkins comme ceci : + +Avec une requête curl : + +~~~ +# curl -u "admin_user:password" 'http://localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)' +~~~ + +Avec une requête wget : + +~~~ +# wget --user=admin_user --password=password --auth-no-challenge -q --output-document - 'http://localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)' +~~~ + +Si on passe par un reverse proxy, il ne faut pas oublié de coché l'option sur l'interface web dans Administrer Jenkins -> Configurer la sécurité globale -> CSRF Protection -> Activer la compatibilité proxy + +## Problème de configuration de Reverse Proxy + +Si sur la page d'administration de Jenkins l'erreur suivante appararait : + +~~~ +La configuration de votre proxy inverse n'est pas bonne +~~~ + +Il faut parametré le ProxyPass avec l'option _nocanon_ comme ceci : + +~~~ + + ProxyPass http://localhost:8080/ nocanon + ProxyPassReverse http://localhost:8080/ + RequestHeader set X-Forwarded-Proto "https" + RequestHeader set X-Forwarded-Port "443" + + +~~~ \ No newline at end of file