Linux

Tips Mendapatkan Nilai A+ pada Hasil Qualys SSL Labs dengan Nginx

Sebelumnya saya telah menulis panduan untuk mendapatkan hasil nilai A+ pada Qualys SSL dengan menggunakan engine Apache2, bisa dilihat disini panduannya >>> Tips Mendapatkan Nilai A+ pada Hasil Qualys SSL Labs dengan Apache

Nahh untuk kali ini kita akan coba menggunakan Nginx sebagai web server nya, dan akan disetup sedemikian rupa agar ketika di cek pada Qualys SSL, akan mendapatkan nilai A+

Langsung saja berikut tahapannya, disini saya menggunakan Ubuntu 20.04 sebagai OS nya

1. Siapkan file SSL Certificate

Yang pertama dibutuhkan yaitu SSL Certificate, bagi yang belum memilikinya, Excellent provide untuk layanan SSL Certificate tersebut, monggo yang mau baca-baca dahulu kelebihannya, bisa klik disini https://www.excellent.co.id/ssl/

2. Install SSL Certificate pada Virtual Host

Jika sudah memiliki file SSL, siapkan file SSL berformat .pem, kemudian Install SSL tersebut pada salah 1 file virtual host yang akan di setup, biasanya letaknya ada di directory /etc/nginx/sites-available. Di bagian section server untuk listen 443 ssl http2, tambahkan script berikut tepat dibawah server_name

ssl_certificate /etc/nginx/ssl/commercial.pem;
ssl_certificate_key /etc/nginx/ssl/commercial.pem;
ssl_protocols TLSv1.2;

3. Konfigurasi SSL Cipher

Untuk meningkatkan nilai SSL, diwajibkan untuk konfigurasi SSL Cipher ini, misal mendisable cipher yang sudah weak dll. Silakan tambahkan script berikut dibawah ssl_protocol

ssl_prefer_server_ciphers on;
ssl_ciphers TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4;

4. Aktivasi HSTS

HSTS merupakan mekanisme keamanan website yang memaksa web browser untuk mengakses website hanya via HTTPS. HSTS juga dapat mencegah dari protocol downgrade attacks dan cookie hijacking. Untuk aktivasinya, silakan tambahkan script berikut ini tepat dibawah ssl_ciphers

add_header Strict-Transport-Security "max-age=63072000; preload";

Berikut ini salah satu contoh file virtualhost yang saya set :

server {
access_log /var/log/nginx/nextcloud.rizkypratama.id-access.log;
log_not_found off;
error_log  /var/log/nginx/nextcloud.rizkypratama.id-error_log;

        listen 443 ssl http2;
        server_name  nextcloud.rizkypratama.id; 

        ssl_certificate /etc/nginx/ssl/commercial.pem;
        ssl_certificate_key /etc/nginx/ssl/commercial.pem;
	ssl_protocols TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_ciphers TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4;
	add_header Strict-Transport-Security "max-age=63072000; preload";
	add_header Referrer-Policy no-referrer always;
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";
	add_header X-Robots-Tag none;
	add_header X-Download-Options noopen;
	add_header X-Permitted-Cross-Domain-Policies none;
	add_header X-Frame-Options "SAMEORIGIN";


        location ~* .(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|wml|swf)$ {
        root   /var/www/nextcloud;
                expires max;
                add_header Pragma public;
                add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        }

        location / {
            root   /var/www/nextcloud;
            index  index.php index.html index.htm;

        # WordPress permalinks configuration
        try_files $uri $uri/ /index.php?$args;
        }


# php-parsing
        location ~ .php$ {
	root	/var/www/nextcloud;
	try_files $uri =404;
	fastcgi_pass	unix:/var/run/php/php7.4-fpm.sock;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	include	fastcgi_params;
	fastcgi_buffer_size 128k;
	fastcgi_read_timeout 150;
	fastcgi_buffers 256 4k;
	fastcgi_busy_buffers_size 256k;
	fastcgi_temp_file_write_size 256k;
	}
}

Jika sudah, silakan save dan restart nginx nya

service nginx restart

Sekarang silakan di cek di Qualys SSL Labs Test untuk mengecek hasilnya dan mendapatkan nilai berapa

https://www.ssllabs.com/ssltest/

Berikut hasil dari salah 1 web saya yang sudah mendapat nilai A+

Mungkin cukup sekian, semoga bermanfaat

Share
Published by
Rizky Pratama

Recent Posts

Tips Zimbra : Mengatasi Service Cbpolicyd Starting Failed Setelah Migrasi ke Rocky Linux 8

Beberapa waktu lalu, Excellent mendapatkan project migrasi Zimbra dari versi Open Source Ke Zimbra Network…

4 weeks ago

Mengatasi Error “no matching host key type found. Their offer: ssh-rsa,ssh-dss” Setelah Upgrade MacOS Ventura Saat Melakukan SSH

Bulan Oktober 2022 lalu, Apple resmi release MacOS terbaru mereka, yaitu MacOS Ventura. Beberapa fitur…

1 year ago

Cara Memindahkan Saham ke Sekuritas Lain

Tidak terasa sudah cukup lama saya tidak update tulisan pada blog ini lagi, akhirnya kali…

2 years ago

Tahun Baru, Markas Baru, Tulisan Baru

Tahun baru 2022 telah tiba, tidak terasa waktu berjalan begitu cepat, banyak cerita dan kenangan…

2 years ago

Mengatasi “Error while performing update: Input/output error (5)” Saat Update Tuxera pada MacOS

Kembali lagi bersama saya, setelah beberapa lama tidak update tulisan pada blog ini :D kali…

2 years ago

Konfigurasi PPTP Client pada Container Docker CLI

PPTP adalah kependekan dari Point-toPoint Tunneling Protocol yang merupakan bahasa yang membuat komputer dapat berkomunikasi…

3 years ago