SonarQube secara langsung tidak bisa digunakan dengan SSL/TLS, untuk keamanan data ada, karena ini berhubungan dengan source code pastikan SSL anda digunakan untuk menghindari MITM oleh ISP ataupun pihak lainnya. Karena limitasi tersebut bukan berarti tidak bisa menggunakan SSL, solusinya yaitu dengan menggunakan Nginx sebagai reverse proxy SonarQube

Mari kita mulai tahap demi tahap cara install SSL di SonarQube.

Set DNS Record

Set DNS untuk domain yang akan digunakan sebagai domain/subdomain, lalu set A record di IP publik tersebut
setting subdomain DNS
ganti IP dengan IP publik anda.

Install Nginx

Install nginx dengan menggunakan apt di Debian/Ubuntu.

sudo apt install nginx -y

Install acme.sh

acme.sh adalah client letscencrypt yang dibuat dengan bash script, sehingga bisa portable dan mudah untuk digunakan.

curl https://get.acme.sh | sh

setelah selesai di install, acme.sh menambahkan konfigurasi di ~/.bashrc. Reload ~/.bashrc agar perubahan tersebut dikenali

source ~/.bashrc

Install socat

socat ini akan digunakan untuk menjalankan proses http di port 80, yang diperlukan untuk menggenerate SSL letencrypt.

sudo apt install socat -y

Install Letsencrypt SSL

Install Letsencrypt SSL dengan menjalankan perintah dibawah ini sebagai root. Pastikan port 80 tidak digunakan di server anda, bisa dicek dengan ss -tunlp | grep 80, karena port 80 tersebut akan di proses dengan socat.

acme.sh --issue -d sonarqube.jaranguda.com --standalone

Set Konfigurasi Server di Nginx

Buat konfigurasi baru untuk server block baru Nginx di /etc/nginx/sites-enabled/sonarqube.DOMAIN.com.conf, disini kita melakukan setup reverse proxy di nginx, dengan kata lain nginx lah yang akan memberikan akses SSL kepada pengunjung, sementara nginx sendiri mengakses SonarQube dengan http.

server {
    listen 443 ssl http2;
    server_name  sonarqube.DOMAIN.com;
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;
    ssl_certificate /root/.acme.sh/sonarqube.DOMAIN.com/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/sonarqube.DOMAIN.com/sonarqube.DOMAIN.com.key;
    location / {
        proxy_pass  http://127.0.0.1:9000;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto http;
    }
}

ganti domain diatas dengan nama domain anda.

Setelah melakukan perubahan tersebut, restart nginx

systemctl restart nginx

Buka sonarqube dengan domain yang baru di setting
sonarqube with ssl

Leave a comment

Your email address will not be published. Required fields are marked *