Ich habe einen Fedora-Server mit Jenkins, den ich über yum installiere. Alles ist in Ordnung, ich kann mit zugreifen http://ci.mydomain.com
.
Jetzt möchte ich aber darauf zugreifen, https://ci.mydomain.com
damit der Login mit Benutzername und Passwort verschlüsselt wird.
Wie kann ich das machen?
Das Folgende ist meine /etc/sysconfig/jenkins
Akte. Das Starten von Jenkins funktioniert, aber ich kann nicht mit dem Webbrowser auf Jenkins zugreifen https://ci.mydomain.com
oder 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"
Antworten:
Diese Seite soll Ihnen helfen, es hinter Apache einzurichten (das HTTPS handhaben würde): https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache
Abgesehen davon, dass Sie ein "normaler" Reverse-Proxy sind, benötigen Sie Folgendes (wie auf dieser Seite gezeigt):
quelle
httpsPort
(und die zugehörigen Parameter): 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/
.Nur für den Fall, dass Sie Nginx und nicht Apache verwenden, möchten Sie möglicherweise
proxy_redirect http:// https://;
den Location-Header neu schreiben, wenn die Antwort von Jenkins zurückkommt.Ein vollständiges Nginx-Setup, bei dem SSL mit Nginx beendet und mit 8080 intern an Jenkins weitergeleitet wird, könnte folgendermaßen aussehen:
quelle
Beachten Sie, dass Jenkins (ab irgendwann?) Den Schlüssel für Sie generieren kann. Sie müssen lediglich den
--httpsPort=(portnum)
Parameter in einstellenJENKINS_ARGS
.In meinem Fall setze ich
JENKINS_PORT="-1"
(deaktiviere http) und setze--httpsPort=8080
was für meine eigenen Zwecke gut funktioniert.Beachten Sie nur, dass jeder Port unter 1000 im Allgemeinen Root-Zugriff erfordert. Wählen Sie also einen höheren Port als diesen ...
( Link für mehr Infos)
quelle
sun.security.x509.CertAndKeyGen
. Außerdem war es bis vor kurzem mit Java 8 defekt (Jenkins 2.38 hat das behoben). Schlimmer noch, das Changelog für diese Veröffentlichung besagt esThis option is deprecated and will be removed in a future release. We strongly recommend you create self-signed certificates yourself and use --httpsKeyStore
.Für einen Ubuntu-Server (vorausgesetzt, Sie haben mit installiert
apt-get install jenkins
):Sie möchten
/etc/default/jenkins
am Ende der Datei bearbeiten, bearbeiten Sie Jenkins_args. In meinen Argumenten habe ich den HTTP-Zugriff deaktiviert (mit -1) und SSL auf den Standard-Jenkins-Port (8080) gesetzt. Der wichtigste Teil hier ist, dass Sie einen httpsPort und ein Zertifikat / einen Schlüssel gesendet haben (falls Sie einen haben, können Sie diese für den selbst erstellten auslassen). Ich lege die crts in Apache und benutze sie dann für beide, aber Sie könnten sie überall ablegen.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"
In einigen Fällen müssen Sie einen Java-Schlüsselspeicher verwenden. Konvertieren Sie zunächst Ihre Schlüssel:
Verwenden Sie jetzt Jenkins Argumente wie
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsKeyStore=/etc/apache2/ssl.crt/jenkins.jks --httpsKeyStorePassword=thePassword --ajp13Port=$AJP_PORT"
Siehe auch https://serverfault.com/a/569898/300544
quelle
openssl
mit dem von angeforderten "Quellschlüsselspeicherkennwort" übereinstimmtkeytool
. Außerdem darf das Passwort nicht leer sein.