J'ai un serveur Fedora sous Jenkins que j'installe via yum. Tout va bien, je peux y accéder avec http://ci.mydomain.com
.
Mais maintenant, je veux y accéder avec https://ci.mydomain.com
pour que le login avec nom d'utilisateur et mot de passe soit crypté.
Comment puis-je faire ceci?
Ce qui suit est mon /etc/sysconfig/jenkins
dossier. Démarrer Jenkins fonctionne, mais je ne peux pas accéder à Jenkins avec le navigateur Web avec https://ci.mydomain.com
ou http://ci.mydomain.com:443
...
## Path: Development/Jenkins
## Description: Configuration for the Jenkins continuous build server
## Type: string
## Default: "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""
## Type: string
## Default: "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"
## Type: string
## Default: "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
## Type: integer(0:65535)
## Default: 8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
#
JENKINS_PORT="8080"
## Type: integer(1:9)
## Default: 5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"
## Type: yesno
## Default: no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"
## Type: integer
## Default: 100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"
## Type: integer
## Default: 20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS="--httpsPort=443 --httpsKeyStore=/root/.keystore --httpsKeyStorePassword=MYPASSWORD"
Réponses:
Cette page devrait vous aider à la configurer derrière Apache (qui gérera le protocole HTTPS): https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache
En plus d'être un proxy inverse "normal", vous en aurez besoin (comme indiqué sur cette page):
la source
httpsPort
(ainsi que les paramètres associés): groups.google.com/group/jenkinsci-users/browse_thread/thread/…In any case: if I put only --httpsPort=8443 or i put --httpsKeyStore=/ path/to/keystore --httpsKeyStorePassword=myPassowrd in my HUDSON_ARGS
?http://yourhostname:8443/
.Juste au cas où vous utilisez Nginx et non Apache, vous pouvez utiliser
proxy_redirect http:// https://;
pour réécrire l'en-tête Location lorsque la réponse revient de Jenkins.Une configuration complète de nginx dans laquelle SSL est résilié avec Nginx et envoyé à Jenkins via un proxy interne à l'aide de 8080 pourrait ressembler à ceci:
la source
Notez que Jenkins peut générer la clé pour vous, il vous suffit de définir le
--httpsPort=(portnum)
paramètre dansJENKINS_ARGS
.Dans mon cas, j'ai défini
JENKINS_PORT="-1"
(désactiver http) et défini--httpsPort=8080
ce qui a bien fonctionné pour mes propres besoins.Notez simplement que tout port inférieur à 1000 nécessite généralement un accès root, aussi choisissez un port supérieur à celui-ci ...
( Lien pour plus d'informations)
la source
sun.security.x509.CertAndKeyGen
. En outre, il était cassé avec Java 8 jusqu'à très récemment (Jenkins 2.38 corrigé cela). Pire encore, le changelog de cette version ditThis option is deprecated and will be removed in a future release. We strongly recommend you create self-signed certificates yourself and use --httpsKeyStore
.Pour un serveur Ubuntu (en supposant que vous avez installé avec
apt-get install jenkins
):Vous voudrez éditer
/etc/default/jenkins
au bas du fichier, éditez Jenkins_args. Dans mes arguments, j'ai désactivé l'accès http (avec -1) et mis SSL sur le port par défaut de Jenkins (8080). La partie la plus importante ici est que vous avez envoyé un httpsPort et un certificat / clé (si vous en avez un, sinon vous pouvez laisser ceux-ci pour le système auto-généré). Je place les crts dans Apache puis je les utilise pour les deux, mais vous pouvez les placer n'importe où.JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsCertificate=/etc/apache2/ssl.crt/CERT.crt --httpsPrivateKey=/etc/apache2/ssl.key/KEY.key --ajp13Port=$AJP_PORT"
Dans certains cas, vous devrez utiliser un magasin de clés Java. Commencez par convertir vos clés:
Maintenant, utilisez les arguments de Jenkins comme
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsKeyStore=/etc/apache2/ssl.crt/jenkins.jks --httpsKeyStorePassword=thePassword --ajp13Port=$AJP_PORT"
Voir également https://serverfault.com/a/569898/300544.
la source
openssl
correspond au "mot de passe du magasin de clés source" demandé parkeytool
. De plus, le mot de passe ne peut pas être vide.