22
0
Fork 0

Ajout configuration vhost https reserve proxy + renéger un "crumb" + solution erreur configuration reserve proxy

This commit is contained in:
emorino 2018-12-28 16:09:56 +01:00
parent 943cb5cd3e
commit 544d70b830
1 changed files with 80 additions and 0 deletions

View File

@ -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 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 :
~~~
<VirtualHost *:80>
ServerName jenkins.efashion-paris.com
Redirect permanent / https://jenkins.efashion-paris.com/
</VirtualHost>
<VirtualHost *:443>
ServerName jenkins.efashion-paris.com
ServerAdmin webmaster@localhost
<Directory proxy:http://localhost:8080/*>
Order deny,allow
Allow from all
</Directory>
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Location />
ProxyPass http://localhost:8080/ nocanon retry=0
ProxyPassReverse http://localhost:8080/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
</Location>
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
</VirtualHost>
~~~
## 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 :
~~~
<Location />
ProxyPass http://localhost:8080/ nocanon
ProxyPassReverse http://localhost:8080/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
</Location>
~~~