How to Configure Jenkins HTTPS

Secara default jenkins dapat diakses menggunakan port 8080 misalnya http://localhost:8080. Bagaimana merubah jenkins agar dapat diakses melalui HTTPS agar lebih aman.

Certificate HTTPS SSL pada web umumnya menggunakan ca.crt ca.key atau .pem sedangkan untuk jenkins ini sendiri adalah menggunakan .jks (Java KeyStore) kurang lebih seperti itu.

Saya tidak menerangkan bagaimana membuat .crt .key dan .pem disini diasumsikan Anda sudah mempunya certificate tersebut. Karena langkah awal ada melakukan convert certificate ssl.

Convert ke .P12

Berikut perintah untuk convert ke .P12

openssl pkcs12 -export -out jenkins.p12 -inkey certificate.key -in certificate.crt -name "jenkins-cert"

password diisi minimal 6 karakter.

Akan terbentuk file baru yaitu jenkins.p12

Convert .P12 ke JKS

Berikut perintah untuk melakukan convert

keytool -importkeystore -srckeystore jenkins.p12 -srcstoretype pkcs12 -destkeystore keystore.jks

Catatan:
Password lebih baik disamakan pada convert p12 maupun convert jks, agar tidak bingung

Langkah selanjutnya edit configure jenkins

vim /lib/systemd/system/jenkins.service

tambahkan berikut

Environment="JENKINS_HTTPS_LISTEN_ADDRESS=0.0.0.0"
Environment="JENKINS_HTTPS_PORT=8443"
Environment="JENKINS_HTTPS_KEYSTORE=/var/lib/jenkins/ssl/keystore.jks"
Environment="JENKINS_HTTPS_KEYSTORE_PASSWORD=passwordsaatconvert"

Restart Jenkins service

systemctl daemon-reload
systemctl restart jenkins.service

Disaat ini https sudah bisa digunakan, akan tetapi port default jenkins 8080 masih bisa diakses. Untuk melakukan disable port 8080, tambah baris berikut

Environment="JENKINS_PORT=-1"

Tambahan:

Bila gitlab menggunakan https misalkan https://gitlab.memoku.id, harus menambahan certificate ssl didalam server jenkins

cp memoku.id.crt /usr/local/share/ca-certificates/
cp memoku.id.pem /etc/ssl/certs/

update certificate

update-ca-certificates