web-dev-qa-db-fra.com

Comment puis-je configurer Jenkins CI pour utiliser https sous Windows?

Nous avons récemment configuré un serveur Jenkins CI sous Windows. Maintenant, afin d'utiliser l'authentification Active Directory, je voudrais exiger https (SSL/TLS) pour l'accès. Compte tenu de cette configuration, quelle est la méthode recommandée pour ce faire?

46
Nick Jones

Accédez à votre% JENKINS_HOME% et modifiez le jenkins.xml. Où tu vois --httpPort=8080 changez-le en --httpPort=-1 --httpsPort=8080 vous pouvez faire des ports tout ce que vous voulez bien sûr, mais dans mes tests (il y a quelque temps, cela a peut-être changé) si vous ne gardez pas --httpPort=<something> alors Jenkins utilisera toujours 8080. Donc, si vous changez simplement --httpPort=8080 à --httpsPort=8080, le port 8080 utilisera toujours http.

De plus, si vous souhaitez utiliser votre propre certificat, il y a quelques instructions au bas de cette page.

http://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins

35
aflat

Courir:

keytool -genkey -keyalg RSA -keystore Jenkins.jks -alias [Name of website] -keysize 2048

Répondez aux questions en vous rappelant que First and last name est l'URL du site Web et doit être en minuscules. Exemple:

build.jenkins-ci.org

State or province ne peut pas être abrégé.

Courir:

keytool -certreq -Keystore jenkins.jks -alias [Name of website] -file jenkins.csr -keysize 2048

Envoyer Jenkins.csr à votre fournisseur de certificats et demandez un certificat PKCS # 7 doté d'un .p7b extension et commence par:

-----BEGIN PKCS #7 SIGNED DATA-----

Remarque: les certificats d'essai ne sont normalement pas disponibles dans .p7b mais vous pourrez peut-être combiner le .cer fichiers utilisant cet outil qui ont rapporté un succès mais ne fonctionnaient pas pour moi. (https://www.sslshopper.com/ssl-converter.html)

Courir:

keytool -import -trustcacerts -file jenkins.p7b -keystore jenkins.jks -alias [Name of website]

Remplacez le noeud arguments dans Jenkins.xml par le code suivant, de la manière suivante.

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=-1 --httpsPort=443 --httpsKeyStore="%BASE%\Cert\Jenkins.jks" --httpsKeyStorePassword=[Cert password from step 1]</arguments>

Dépannage:

  • Si Jenkins ne démarre pas, lisez les dernières lignes de Jenkins.err.log.
  • Si Jenkins n'a pas démarré en raison d'un problème avec Jenkins.xml, remplace le (trait d'union Windows étrange) avec un - (Trait d'union ASCII).
  • Si Jenkins démarre mais que le certificat se lit toujours comme mauvais, assurez-vous que le [Name of website] est l'URL réelle sans le https: exemple: https://build.jenkins-ci.org serait build.jenkins-ci.org.
  • Si ce n'est pas le problème, inspectez le .jks fichier utilisant KeyStore Explorer. La "hiérarchie des certificats" doit montrer que chaque certificat est imbriqué dans un autre; Ceci est pour illustrer la chaîne cert. S'il montre les certificats côte à côte, ce n'est pas correct.
  • S'il ne démarre pas sur un port spécifique, par exemple 443, vérifiez alors IIS ou une autre application n'utilise pas actuellement le port.
  • Si vous pouvez voir le site sur le PC sur lequel il est hébergé, mais pas sur un autre PC, vérifiez que vous n'êtes pas bloqué par un pare-feu.
18
Gabe

Étape 1: créez un certificat public et privé sur votre nom jenkin (convertissez-les en fichier de clés si ce n'est pas le cas) Étape 2: importez le certificat public dans votre gestionnaire de certificats de navigateur (importez dans tous les onglets) clé publique et privée.

Pour les étapes, reportez-vous à " Activer HTTPS dans jenkins? "

0
ravi creed