У меня есть сервер Fedora под управлением Jenkins, который я устанавливаю через yum. Все хорошо, я могу получить к нему доступ http://ci.mydomain.com
.
Но теперь я хочу получить к нему доступ, https://ci.mydomain.com
поэтому логин с именем пользователя и паролем зашифрован.
Как я могу это сделать?
Ниже мой /etc/sysconfig/jenkins
файл. Запуск Jenkins работает, но я не могу получить доступ к Jenkins через веб-браузер с помощью https://ci.mydomain.com
или 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"
Ответы:
Эта страница должна помочь вам настроить его за Apache (который будет обрабатывать HTTPS): https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache
Помимо «нормального» обратного прокси, вам понадобится это (как показано на этой странице):
источник
httpsPort
(и связанные параметры): 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/
.На всякий случай, если вы используете Nginx, а не Apache, вы можете использовать его
proxy_redirect http:// https://;
для перезаписи заголовка Location, когда ответ приходит от Jenkins.Полная настройка nginx, где SSL завершается с помощью Nginx и внутренне передается в Jenkins с использованием 8080, может выглядеть следующим образом:
источник
Обратите внимание, что (на какое-то время?) Jenkins может сгенерировать ключ для вас, все, что вам нужно сделать, это установить
--httpsPort=(portnum)
параметр вJENKINS_ARGS
.В моем случае я установил
JENKINS_PORT="-1"
(отключил http) и установил,--httpsPort=8080
который работал хорошо для моих собственных целей.Просто отметьте, что любой порт ниже 1000 обычно требует root-доступа, поэтому выберите порт выше этого ...
( Ссылка для получения дополнительной информации)
источник
sun.security.x509.CertAndKeyGen
. Кроме того, это было сломано с Java 8 до самого недавнего времени (Jenkins 2.38 исправил это). Что еще хуже, в журнале изменений этого релиза говоритсяThis option is deprecated and will be removed in a future release. We strongly recommend you create self-signed certificates yourself and use --httpsKeyStore
.Для сервера Ubuntu (если вы установили с
apt-get install jenkins
):Вы захотите отредактировать
/etc/default/jenkins
в нижней части файла, отредактируйте Jenkins_args. В моих аргументах я отключил http-доступ (используя -1) и установил SSL на порт Jenkins по умолчанию (8080). Наиболее важной частью здесь является то, что вы отправили httpsPort и сертификат / ключ (если у вас есть, в противном случае вы можете оставить их для самогенерируемого). Я помещаю crts в apache и затем использую их для обоих, но вы можете поместить их где угодно.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"
В некоторых случаях вам придется использовать хранилище ключей Java. Сначала конвертируйте ваши ключи:
Теперь используйте аргументы Дженкинса, как
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsKeyStore=/etc/apache2/ssl.crt/jenkins.jks --httpsKeyStorePassword=thePassword --ajp13Port=$AJP_PORT"
Также см. Https://serverfault.com/a/569898/300544.
источник
openssl
соответствует «исходному паролю хранилища ключей», запрошенномуkeytool
. Кроме того, пароль не может быть пустым.