Saya memiliki server Fedora yang menjalankan Jenkins yang saya instal melalui yum. Semuanya baik-baik saja, saya dapat mengaksesnya http://ci.mydomain.com
.
Tapi sekarang, saya ingin mengaksesnya dengan https://ci.mydomain.com
begitu login dengan nama pengguna dan kata sandi dienkripsi.
Bagaimana saya bisa melakukan ini?
Berikut ini adalah /etc/sysconfig/jenkins
file saya . Memulai Jenkins berfungsi, tetapi saya tidak dapat mengakses Jenkins dengan browser web dengan https://ci.mydomain.com
atau 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"
Jawaban:
Halaman ini akan membantu Anda mengaturnya di belakang Apache (yang akan menangani HTTPS): https://wiki.eclipse.org/Hudson-ci/Running_Hudson_behind_Apache
Selain sebagai proxy-terbalik "normal", Anda akan memerlukan ini (seperti yang ditunjukkan pada halaman itu):
sumber
httpsPort
(dan parameter terkait): 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/
.Untuk berjaga-jaga jika Anda menggunakan Nginx dan bukan Apache, Anda mungkin ingin menggunakan
proxy_redirect http:// https://;
untuk menulis ulang header Lokasi saat respons kembali dari Jenkins.Pengaturan nginx lengkap tempat SSL diakhiri dengan Nginx dan diproksi secara internal ke Jenkins menggunakan 8080 mungkin terlihat seperti ini:
sumber
Perhatikan bahwa (kadang-kadang?) Jenkins dapat membuat kunci untuk Anda, semua yang perlu Anda lakukan adalah mengatur
--httpsPort=(portnum)
parameterJENKINS_ARGS
.Dalam kasus saya, saya mengatur
JENKINS_PORT="-1"
(menonaktifkan http) dan mengatur--httpsPort=8080
yang bekerja dengan baik untuk tujuan saya sendiri.Harap perhatikan bahwa port apa pun di bawah 1000 umumnya memerlukan akses root, jadi pilih port yang lebih tinggi dari itu ...
( Tautan untuk info lebih lanjut)
sumber
sun.security.x509.CertAndKeyGen
. Juga, itu rusak dengan Java 8 sampai saat ini (Jenkins 2.38 memperbaikinya). Lebih buruk lagi, changelog untuk rilis itu mengatakanThis option is deprecated and will be removed in a future release. We strongly recommend you create self-signed certificates yourself and use --httpsKeyStore
.Untuk server Ubuntu (dengan asumsi Anda menginstal dengan
apt-get install jenkins
):Anda ingin mengedit
/etc/default/jenkins
di bagian bawah file, mengedit Jenkins_args. Dalam argumen saya, saya telah menonaktifkan akses http (menggunakan -1) dan meletakkan SSL pada port Jenkins default (8080). Bagian terpenting di sini adalah Anda mengirim httpsPort dan sertifikat / kunci (jika Anda memilikinya, jika tidak, Anda dapat membatalkannya untuk yang dihasilkan sendiri). Saya menempatkan crts di apache dan kemudian menggunakannya untuk keduanya, tetapi Anda bisa meletakkannya di mana saja.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"
Dalam beberapa kasus, Anda harus menggunakan Java Key Store. Pertama, konversikan kunci Anda:
Sekarang gunakan Jenkins args like
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpsPort=$HTTP_PORT --httpPort=-1 --httpsKeyStore=/etc/apache2/ssl.crt/jenkins.jks --httpsKeyStorePassword=thePassword --ajp13Port=$AJP_PORT"
Juga, lihat https://serverfault.com/a/569898/300544
sumber
openssl
sesuai dengan "kata sandi keystore sumber" yang diminta olehkeytool
. Selanjutnya, kata sandi tidak boleh kosong.