Как настроить Jenkins CI для использования https в Windows?

Недавно мы установили сервер Jenkins CI в Windows. Теперь, чтобы использовать аутентификацию Active Directory, я хотел бы потребовать https (SSL/TLS) для доступа. Учитывая эту настройку, каков рекомендуемый способ сделать это?


person Nick Jones    schedule 15.03.2011    source источник
comment
Вы запускаете Jenkins в контейнере сервлетов, таком как Tomcat?   -  person Bernard    schedule 15.03.2011
comment
Нет, просто как служба Windows (которая, я думаю, все еще использует Winstone в качестве контейнера сервлетов?).   -  person Nick Jones    schedule 15.03.2011


Ответы (3)


Перейдите в свой %JENKINS_HOME% и измените файл jenkins.xml. Там, где вы видите --httpPort=8080, измените его на --httpPort=-1 --httpsPort=8080, вы, конечно, можете сделать порты любыми, но в моем тестировании (некоторое время назад это могло измениться), если вы не сохраните --httpPort=<something>, тогда Дженкинс всегда будет использовать 8080. Так что, если вы просто измените --httpPort=8080 на --httpsPort=8080, порт 8080 по-прежнему будет использовать http.

Кроме того, если вы хотите использовать свой собственный сертификат, внизу этой страницы есть несколько инструкций.

http://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins

person aflat    schedule 16.03.2011
comment
Спасибо, Джордж, я выполнил все шаги на странице, на которую вы ссылаетесь. На данный момент у меня есть хранилище ключей winstone.ks в папке Jenkins (и я могу проверить его содержимое с помощью java keytool). Однако, когда я перезапускаю Jenkins, я получаю следующее: [Winstone 2011/03/16 15:44:21] - Error during HTTPS listener init or shutdown java.security.UnrecoverableKeyException: Cannot recover key, за которым следует остальная часть трассировки стека. Я уверен, что пароль хранилища ключей правильный. Любые идеи? - person Nick Jones; 16.03.2011
comment
Просто чтобы закрыть эту тему, проблема, с которой я столкнулся, заключалась в том, что пароль хранилища ключей и пароль сертификата (введенный при создании CSR) были разными. Как только я воссоздал хранилище ключей с паролем, совпадающим с паролем сертификата, проблема была решена. - person Nick Jones; 31.03.2011
comment
Примечание для тех, кто хочет сделать то же самое на компьютере с CentOS: предлагаемые изменения можно внести в файл, найденный в /etc/sysconfig/jenkins. - person dkinzer; 06.05.2012
comment
Еще одна вещь: мне нужно было установить --httpPort=-1, иначе это не сработает. - person dkinzer; 06.05.2012
comment
После изменения jenkins.xml необходимо перезапустить сервер jenkins. - person Ripon Al Wasim; 15.02.2013
comment
Вы определенно захотите создать самозаверяющий сертификат в формате JKS, как описано в другом ответе, и использовать его. добавив --httpsKeyStore=path/to/keystore --httpsKeyStorePassword=keystorePassword в jenkins.xml, как описано в Jenkins Wiki< /а>. В противном случае Jenkins, похоже, генерирует новый сертификат каждый раз при перезапуске, вызывая диалоговое окно «Ненадежное соединение» в Firefox каждый раз, когда отпечатки пальцев меняются. - person sschuberth; 04.02.2015
comment
Я создал самоподписанный сертификат в соответствии с инструкциями, и он отлично работал. Единственная проблема заключалась в том, что мне приходилось ссылаться на адрес по IP вместо локального хоста, и я сразу же мог получить доступ к Jenkins. - person Ryan Rodemoyer; 25.03.2016

Бежать:

keytool -genkey -keyalg RSA -keystore Jenkins.jks -alias [Name of website] -keysize 2048

Ответьте на вопросы, помня, что First and last name – это URL-адрес веб-сайта, который должен быть написан строчными буквами. Пример:

build.jenkins-ci.org

State or province нельзя сокращать.

Бежать:

keytool -certreq -Keystore jenkins.jks -alias [Name of website] -file jenkins.csr -keysize 2048

Отправьте Jenkins.csr своему поставщику сертификатов и запросите сертификат PKCS#7, который имеет расширение .p7b и начинается с:

-----BEGIN PKCS #7 SIGNED DATA-----

Примечание. Пробные сертификаты обычно недоступны в формате .p7b, но вы можете объединить файлы .cer с помощью этого инструмента, который сообщил об успехе, но не работал у меня. (https://www.sslshopper.com/ssl-converter.html)

Бежать:

keytool -import -trustcacerts -file jenkins.p7b -keystore jenkins.jks -alias [Name of website]

Измените узел arguments в Jenkins.xml на следующий предварительно.

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=-1 --httpsPort=443 --httpsKeyStore="%BASE%\Cert\Jenkins.jks" --httpsKeyStorePassword=[Cert password from step 1]</arguments>

Поиск проблемы:

  • Если Дженкинс не начинает читать последние строки из Jenkins.err.log.
  • Если Jenkins не запустился из-за проблемы с Jenkins.xml, замените символы (странный дефис Windows) на настоящий - (дефис ASCII).
  • Если Jenkins запускается, но сертификат по-прежнему читается как плохой, убедитесь, что [Name of website] является фактическим URL-адресом без https:, например: https://build.jenkins-ci.org будет build.jenkins-ci.org.
  • Если это не проблема, проверьте файл .jks, используя KeyStore Explorer. «Иерархия сертификатов» должна показывать, что каждый сертификат вложен в другой; Это для иллюстрации цепочки сертификатов. Если он показывает сертификаты рядом друг с другом, то это неправильно.
  • Если он не запускается на определенном порту, например 443, убедитесь, что IIS или другое приложение в настоящее время не использует этот порт.
  • Если вы видите сайт на компьютере, на котором он размещен, но не видите на другом компьютере, убедитесь, что вас не блокирует брандмауэр.
person Gabe    schedule 07.03.2012
comment
Я просто хотел прокомментировать, что этот набор инструкций работал безупречно для меня, когда мне нужно было настроить новый сервер сборки Jenkins с нуля. - person Nick Jones; 26.07.2012
comment
Привет, я знаю, что это старо, но есть ли способ преобразовать файл .crt в jks? - person derHugo; 19.04.2018

Шаг 1: Создайте как публичный, так и частный сертификат на ваше имя jenkin (преобразуйте их в файл ключей, если это не так). Шаг 2: Импортируйте общедоступный сертификат в диспетчер сертификатов вашего браузера (импортируйте во все вкладки). открытый и закрытый ключ.

Инструкции см. в разделе «Включить HTTPS в jenkins?"

person ravi creed    schedule 05.04.2019