Tengo un servidor Fedora ejecutando Jenkins que instalo a través de yum. Todo está bien, puedo acceder con él http://ci.mydomain.com
.
Pero ahora, quiero acceder a él https://ci.mydomain.com
para que el inicio de sesión con nombre de usuario y contraseña esté encriptado.
¿Cómo puedo hacer esto?
El siguiente es mi /etc/sysconfig/jenkins
archivo. Iniciar Jenkins funciona, pero no puedo acceder a Jenkins con el navegador web con https://ci.mydomain.com
o 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"
Respuestas:
Esta página debería ayudarlo a configurarlo detrás de Apache (que manejaría HTTPS): https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache
Además de ser un proxy inverso "normal", necesitará esto (como se muestra en esa página):
fuente
httpsPort
(y parámetros relacionados): 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/
.En caso de que esté usando Nginx y no Apache, es posible que desee
proxy_redirect http:// https://;
volver a escribir el encabezado de Ubicación cuando Jenkins le devuelva la respuesta.Una configuración completa de nginx donde SSL termina con Nginx y se envía internamente a Jenkins usando 8080 podría verse así:
fuente
Tenga en cuenta que (¿en algún momento?) Jenkins puede generar la clave por usted, todo lo que necesita hacer es configurar el
--httpsPort=(portnum)
parámetroJENKINS_ARGS
.En mi caso configuré
JENKINS_PORT="-1"
(deshabilito http) y configuré--httpsPort=8080
cuál funcionó bien para mis propios fines.Solo tenga en cuenta que cualquier puerto por debajo de 1000 generalmente requiere acceso de root, así que elija un puerto más alto que eso ...
( Enlace para más información)
fuente
sun.security.x509.CertAndKeyGen
. Además, se rompió con Java 8 hasta hace muy poco (Jenkins 2.38 lo solucionó). Peor aún, dice el registro de cambios para ese lanzamientoThis option is deprecated and will be removed in a future release. We strongly recommend you create self-signed certificates yourself and use --httpsKeyStore
.Para un servidor Ubuntu (suponiendo que haya instalado
apt-get install jenkins
):/etc/default/jenkins
Querrá editar en la parte inferior del archivo, edite Jenkins_args. En mis argumentos, deshabilité el acceso http (usando -1) y puse SSL en el puerto predeterminado de Jenkins (8080). La parte más importante aquí es que envió un httpsPort y un certificado / clave (si tiene uno, de lo contrario, puede dejarlos para el autogenerado). Coloco los crts en apache y luego los uso para ambos, pero podría ponerlos en cualquier lugar.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"
En algunos casos, tendrá que usar un Java Key Store. Primero, convierta sus llaves:
Ahora usa los argumentos de Jenkins como
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsKeyStore=/etc/apache2/ssl.crt/jenkins.jks --httpsKeyStorePassword=thePassword --ajp13Port=$AJP_PORT"
Además, consulte https://serverfault.com/a/569898/300544
fuente
openssl
coincida con la "contraseña del almacén de claves de origen" solicitada porkeytool
. Además, la contraseña no puede estar en blanco.