Mam serwer Fedory z systemem Jenkins, który instaluję przez yum. Wszystko jest w porządku, mogę uzyskać do nich dostęp http://ci.mydomain.com
.
Ale teraz chcę uzyskać do niego dostęp, https://ci.mydomain.com
więc login z nazwą użytkownika i hasłem jest szyfrowany.
W jaki sposób mogę to zrobić?
Oto mój /etc/sysconfig/jenkins
plik. Począwszy Jenkins działa, ale nie może uzyskać dostępu Jenkins z WebBrowser z https://ci.mydomain.com
lub 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"
Odpowiedzi:
Ta strona powinna pomóc Ci ustawić ją za Apache (który obsługiwałby HTTPS): https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache
Oprócz tego, że jest „normalnym” odwrotnym proxy, potrzebujesz tego (jak pokazano na tej stronie):
źródło
httpsPort
(i powiązanych parametrów): 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/
.Na wypadek, gdybyś używał Nginx, a nie Apache, możesz użyć
proxy_redirect http:// https://;
przepisania nagłówka Location, gdy odpowiedź powróci od Jenkinsa.Pełna konfiguracja nginx, w której protokół SSL jest zakończony przy użyciu Nginx i wewnętrznie połączony z serwerem Jenkins za pomocą 8080, może wyglądać następująco:
źródło
Zauważ, że (od jakiegoś czasu?) Jenkins może wygenerować klucz dla ciebie, wszystko co musisz zrobić, to ustawić
--httpsPort=(portnum)
parametr wJENKINS_ARGS
.W moim przypadku ustawiłem
JENKINS_PORT="-1"
(wyłączam http) i ustawiłem,--httpsPort=8080
który działał dobrze dla moich własnych celów.Pamiętaj, że każdy port poniżej 1000 zazwyczaj wymaga dostępu do konta root, więc wybierz port wyższy niż ten ...
( Link, aby uzyskać więcej informacji)
źródło
sun.security.x509.CertAndKeyGen
. Do niedawna był zepsuty w Javie 8 (naprawił to Jenkins 2.38). Co gorsza, dziennik zmian tego wydania mówiThis option is deprecated and will be removed in a future release. We strongly recommend you create self-signed certificates yourself and use --httpsKeyStore
.W przypadku serwera Ubuntu (zakładając, że został zainstalowany
apt-get install jenkins
):Będziesz chciał edytować
/etc/default/jenkins
na dole pliku, edytuj Jenkins_args. W moich argumentach wyłączyłem dostęp http (używając -1) i ustawiłem SSL na domyślnym porcie Jenkins (8080). Najważniejsze w tym miejscu jest to, że wysłałeś httpsPort i certyfikat / klucz (jeśli taki posiadasz, w przeciwnym razie możesz pominąć je dla wygenerowanego samodzielnie). Umieszczam crts w apache, a następnie używam ich do obu, ale możesz je umieścić w dowolnym miejscu.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"
W niektórych przypadkach będziesz musiał użyć Java Key Store. Najpierw przekonwertuj klucze:
Teraz użyj takich argumentów jak Jenkins
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsKeyStore=/etc/apache2/ssl.crt/jenkins.jks --httpsKeyStorePassword=thePassword --ajp13Port=$AJP_PORT"
Zobacz także https://serverfault.com/a/569898/300544
źródło
openssl
zgodne z „hasłem źródłowego pliku kluczy”, o które poprosiłkeytool
. Ponadto hasło nie może być puste.