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
Rizky Pratama. Tinggal di Bekasi, Jawa Barat. Seorang IT di salah satu perusahaan IT. Pengguna Mac, Linux dan Windows
Selain sebagai penulis di blog ini, saya juga penulis di blog saya yang lain, yaitu https://pratama.biz.id
Utk dapetin full bar kyk gini gimana ya?
https://www.ssllabs.com/ssltest/analyze.html?d=skytuition.online
Bisa dicoba disable beberapa cipher yang weak, dan gunakan cipher yang trust saja, seperti berikut
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
Lalu disable TLS 1.0 dan 1.1, dan hanya aktifkan TLS 1.2 saja
Gan klo di cpanel gmna caranya? Saya sdh melakukan beberapa tambahan di htacces tpi hasilnya masih B. Gmna suapaya bisa A gan? Solusinya dong
Klo di cPanel, mungkin bisa coba hubungi provider hosting nya gan kalau berlangganan hosting, karena supaya dapat nilai A, setting nya bukan dari htaccess, melainkan dari engine webserver nya
Mas bisa tolong dijelaskan perlahan masing-masing letak confignya? karena saya baru belajar, webserver nginx masih default & tidak menggunakan blok server.
mau memasukkan data-data diatas masih bingung ditulis dikonfig yg mana
nginx defaultnya seinget saya tetap pakai virtualhost, ada di file /etc/nginx/sites-available/default, bisa dibuat saja 1 virtualhost baru di dalam directory /etc/nginx/sites-available, kemudian symlink file tersebut ke /etc/nginx/sites-enabled/
Gan klo di cpanel gmna caranya? Saya sdh melakukan beberapa tambahan di htacces tpi hasilnya masih B. Gmna suapaya bisa A gan? Solusinya dong