Uji SSL yang disediakan oleh Qualys melakukan evaluasi yang sangat menyeluruh terhadap konfigurasi SSL di server Anda. Ini cara yang bagus untuk mengetahui apakah Anda mengkonfigurasikan SSL di website anda dengan benar atau tidak.
Di blog ini saya akan membahas langkah-langkah yang diperlukan untuk mendapatkan peringkat A +, sebagai skor tertinggi. Setelah semua orang menambal dan memeriksa server mereka setelah Heartbleed, POODLE attack,
BEAST, FREAK, Logjam Attack
dan sebagainya,sekarang mari kita ambil kesempatan untuk melakukan beberapa perbaikan selagi belum ada kejadian buruk menimpa website yang kita kelola!

Untuk membuat artikel ini relevan dengan kenyataan, saya dengan sengaja menginstall nginx dan apache dalam server yang sama, sehingga kita bisa membandingkan konfigurasi antara keduanya.
Tentu saja ketika kita melakukan Online test kita harus memastikan keduanya tidak berjalan secara bersamaan yang akan menimbulkan konflik karena kedua services ini akan membuka port tcp/443.

APACHE Konfigurasi
Pastikan apache webserver sudah terinstall tanpa perlu dilakukan aktivasi service di /etc/rc.conf karena kita akan menjalankan nya secara manual dengan opsi ‘onestart’.
Paket yang di butuhkan adalah apache24 beserta mod_php72 dan saya menggunakan paket binari tidak menginstallnya melalui porttree, silahkan gunakan metode instalasi manapun tergantung prinsip masing-masing.
# pkg install apache24 mod_php72

Check apache24 dan openssl version:

# httpd -v
   Server version: Apache/2.2.15 (Unix)
   Server built:   Jul 13 2017 19:10:24
# openssl version
   OpenSSL 1.0.1e-fips 11 Feb 2013

Buat Random Diffie-Hellman parameters dengan ukuran 2048 bits, proses generate DH-params akan berlangsung cukup lama tergantung spesifikasi server anda masing-masing.

# openssl dhparam -out dhparam2048.pem 2048
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
................................................................................                                                                             .................................................................................

Buat berkas virtualhost baru didalam direktori /usr/local/etc/apache24/Includes/agusprasetia.conf.
Masukan konfigurasi seperti contoh dibawah ini

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

# HTTP Redirection

ServerName agusprasetia.com
Redirect permanent / https://agusprasetia.com/


# HTTPS Server
Listen 443

    ServerName agusprasetia.com
    DocumentRoot /path/to/website/agusprasetia.com
    ErrorLog /var/log/httpd/agusprasetia.com_error_log
    CustomLog /var/log/httpd/agusprasetia.com_access_log combined
    SSLEngine on
    SSLCertificateFile /etc/ssl/agusprasetia.com/domain_chain.pem
    SSLCertificateKeyFile /etc/ssl/agusprasetia.com/agusprasetia.com.key
    SSLOpenSSLConfCmd DHParameters /etc/ssl/agusprasetia.com/dhparam2048.pem
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 \
	EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
    SSLHonorCipherOrder on
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"

Konfigurasi sudah dibuat pastikan tidak ada error ketika menjalankan service apache dan pastikan service nginx sudah di matikan terlebih dahulu.
Pertama kali apache dijalankan muncul error sebagai berikut:
No such file or directory: AH00075: Failed to enable the ‘dataready’ Accept Filter
No such file or directory: Failed to enable the ‘httpready’ Accept Filter


Solusinya Load kernel module on the fly:
# kldload accf_http
# kldload accf_data

Atau permanen solusi masukan baris ini ke dalam /boot/loader.conf dibaris terakhir

# Beginning Tunning ethernet device
hw.em.rxd=4096
hw.em.txd=4096
# Ending Tunning ethernet device
mac_portacl_load="YES"
vfs.zfs.prefetch_disable=0
kern.maxfiles="25000"
kern.kstack_pages=4
vm.kmem_size="512M"
vm.kmem_size_max="512M"
# calomel.org
autoboot_delay="5
net.inet.tcp.hostcache.cachelimit="0"
machdep.hyperthreading_allowed="0"
net.inet.tcp.soreceive_stream="1"
# apache24 startup error
accf_http_load="YES"
accf_data_load="YES"

Aktifkan service apache
# service apache24 onestart

Cek apache header melalui command line dari laptop saya

APACHE Headers

Saat nya kita lakukan Online test apakah bisa mendapatkan Rating A+



NGINX Konfigurasi
Install paket binari nginx webserver
# pkg install nginx

Buat virtualhost dengan lokasi /usr/local/etc/nginx/vhosts
# mkdir -p /usr/local/etc/nginx/vhosts
# nano /usr/local/etc/nginx/vhosts/agusprasetia.com.conf


Masukan konfigurasi virtualhost seperti dibawah ini

server {
    listen 80;
    server_name www.agusprasetia.com;
    return 301 https://www.agusprasetia.com$request_uri;
}

 server {
        listen  443;
        server_name www.agusprasetia.com;
        root /usr/local/www/nginx-dist/agusprasetia;
        index index.php index.html index.htm;

        # SSL Certificate for https
        ssl on;
        ssl_certificate /etc/ssl/agusprasetia.com/domain_chain.pem;
        ssl_certificate_key /etc/ssl/agusprasetia.com/agusprasetia.com.key;

        # Hardening SSL
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/DH/dhparam2048.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES1$';
	ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
	add_header Referrer-Policy "";
	rewrite ^/wp-content/cache/minify/ /index.php last;
        #charset koi8-r;
        access_log  logs/agusprasetia.access.log;
        error_log   logs/agusprasetia.error.log;

	location / {
        try_files $uri $uri/ /index.php?$args ;
        #    root   /usr/local/www/nginx;
        #    index  index.html index.htm;
        location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
	fastcgi_read_timeout 150;
        }

	error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
	}
        }

Matikan service apache24 kemudian baru kita bisa menjalankan service nginx dengan perintah service nginx onestart dan kembali kita check page headers nginx.

NGINX Headers

Hasil Online ssl test kita berhasil mendapatkan Rating A+ untuk webserver NGINX.

Ternyata tidak terlalu sulitkan untuk mendapatkan nilai A+? hanya perlu sedikit adaptasi variable konfigurasi antara nginx dan apache.
Semoga artikel ini bisa membantu untuk rekan2 yang ingin meningkatkan rating sekurity ssl di websitenya masing-masing.

Leave a Reply

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