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
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