Cara Install Let’S Encrypt Di Nginx (Score A+)

Panduan cara install sertifikat SSL Let’s Encrypt di Nginx web server dengan score A+ uji coba menggunakan SSLLabs Test. Pada tutorial ini operasi sistem yang digunakan ialah Linux Ubuntu 18 dan CentOS 7, untuk OS lain silahkan disesuaikan.


Jika Anda belum menginstall Nginx, ikuti langkah awal berikut, kalau sudah eksklusif saja ke tahap selanjutnya, Install Let’s Encrypt.


INFO: Pastikan domain sudah terhubung ke server

Install Nginx di Ubuntu dan CentOS


Di bawah ini secara singkat panduan instalasi Nginx dengan opsi distro Linux yang Anda gunakan, untuk panduan komprehensif silahkan baca tutorial sebelumnya:



Keterangan:


Instalasi Nginx pada panduan ini, lokasi direktori web root masih menggunakan konfigurasi bawaan yaitu:



  • Pada Ubuntu /var/www/html

  • Pada CentOS /usr/share/nginx/html

  • Domain sebagai pola idnetter.com, silahkan diganti.


Jadi harap diperhatikan dikala Anda copy-paste setiap konfigurasi, kalau tidak valid, maka proses generate sertifikat gagal!.


Instalasi Nginx untuk Ubuntu


apt update -y && apt install nginx -y
systemctl start nginx
systemctl enable nginx

Jika Anda mengaktifkan Firewall di Ubuntu pastikan untuk mengizinkan port 80 dan 443, kalau tidak lewati langkah ini.


ufw allow 80
ufw allow 443

Instalasi Nginx untuk CentOS


yum install epel-release nginx -y
systemctl start nginx
systemctl enable nginx

Secara default CentOS versi terbaru firewallnya aktif, Anda dapat menonaktifkan firewallD dengan perintah systemctl stop firewalld && systemctl disable firewalld. Namun kalau tetap ingin mengaktifkan firewall-cmd pastikan untuk mengizinkan trafik http dan https.


firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent

Install Let’s Encrypt


Pilihan instalasi Let’s Encrypt untuk distro Linux Ubuntu dan CentOS


Instalasi Let’s Encrypt untuk Ubuntu


apt install letsencrypt -y

Kemudian buat file konfigurasi gres yaitu certbot.conf dengan nano teks editor.


nano /etc/nginx/snippets/certbot.conf

Isi konfigurasi menyerupai dibawah ini.


location /.well-known {
alias /var/www/html/.well-known;
}

Berikutnya buka konfigurasi default Nginx


nano /etc/nginx/sites-available/default

Tambahkan baris berikut ke dalam blok atau kolom server


include /etc/nginx/snippets/certbot.conf

Contoh:


server {
    listen *:80;
    server_name idnetter.com www.idnetter.com;
    include /etc/nginx/snippets/certbot.conf;
    ...
    ...
}

Simpan


Instalasi Let’s Encrypt untuk CentOS


yum install cerbot -y

Buat konfig perhiasan di /etc/nginx/default.d/


nano /etc/nginx/default.d/certbot.conf

Paste konfig ini


location /.well-known {
    alias /usr/share/nginx/html/.well-known;
}

Lalu, buka konfigurasi default Nginx


nano /etc/nginx/conf.d/default

Jika tidak ada


nano /etc/nginx/nginx.conf

Tambahkan baris berikut ke dalam kolom server


include /etc/nginx/default.d/certbot.conf

Contoh:


server {
    listen *:80;
    server_name idnetter.com www.idnetter.com;
    include /etc/nginx/default.d/certbot.conf;
    ...
    ...
}

Simpan


Membuat sertifikat SSL Let’s Encrypt


Kita akan menciptakan sertifikat Let’s Encrypt dengan menggunakan perintah certbot


certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email man@idnetter.com -w /var/www/html -d idnetter.com -d www.idnetter.com

Selanjutnya, kita akan menciptakan juga sekuriti perhiasan yakni dengan cara meng-generate dhparam key 4098-bit di dalam direktori /etc/nginx/ dengan opsi dsaparam biar prosesnya cepat.


openssl dhparam -dsaparam -out /etc/nginx/dhparam.pem 4096

Langkah selanjutnya konfigurasi SSL


Konfigurasi SSL


Buat file konfigurasi SSL


Untuk Ubuntu


nano /etc/nginx/snippets/ssl.conf

Untuk CentOS


nano /etc/nginx/defaut.d/ssl.conf

Isi dengan konten berikut.


Ada 3 chipersuites yakni rekomedasi dari chiperli, Mozilla dan VestaCP, aku menggunakan Vesta. jangan lupa ganti domain idnetter.com.


# Versi TLS
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

# Rekomendasi chiperli
# Gunakan chipersuites ini untuk mendapat poin 100 pada SSLLabs Test
# Tapi tidak support untuk beberapa device
#ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";

# Rekomendasi Mozilla
# Mungkin akan support lebih banyak device
# tapi sehabis aku coba website aku tidak dapat dibuka pada device usang menyerupai Android kitkat ke bawah.
#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

# VestaCP
# ini yang aku gunakan, aku mengambil konfigurasi punya VestaCP, banyak device yang support
# meskipun mungkin tidak support pada IE 8 windows XP (keterangan di SSLLabs, belum tahu faktanya)
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

# DHPARAM key dan ECDH curve >= 256bit
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ecdh_curve secp384r1;

server_tokens off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Mengaktifkan OSCP Stapling for Nginx web server
# Gunakan sertifikat chain.pem untuk SSL Letsencrypt
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# Proteksi XSS
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
# Mengaktifkan HTTP Strict-Transport-Security
# Jika SSLnya digunakan juga untuk subdomain
# pastikan untuk menghapus opsi 'includeSubdomainsl; preload', kalau tidak kemungkinan subdomain tidak akan dapat diakses.
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

Konfigurasi Nginx dengan SSL


Buka file konfigurasi server block Nginx, di CentOS biasanya letaknya di /etc/nginx/conf.d/default sedangkan Ubuntu di /etc/nginx/sites-available/default , ganti dengan konfigurasi berikut ini


Perhatian! semua trafik http aku redirect permanen ke protokol https.



  • Ubah server_name idnetter.com www.idnetter.com; sesuai domain Anda

  • Ubah fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; sesuai versi PHP yang Anda gunakan.

  • Ubah web root /var/www/html sesuaikan

  • Jika Anda menggunakan CentOS, ubah /etc/nginx/snippets/ssl.conf; menjadi /etc/nginx/default.d/ssl.conf;


server {
listen *:80;
#listen [::]:80;
server_name idnetter.com www.idnetter.com;
return 301 https://$server_name$request_uri;
}

server {
listen *:443 ssl http2;
#listen [::]:443 ssl http2;
server_name idnetter.com www.idnetter.com;

# Deprecated kalau pakai http2
# ssl on;
ssl_certificate /etc/letsencrypt/live/idnetter.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/idnetter.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/idnetter.com/chain.pem;

# Konfigurasi SSL
include /etc/nginx/snippets/ssl.conf;

location /.well-known {
allow all;
}

root /var/www/html/;
index index.htm index.html index.php;

location / {
try_files $uri $uri/ /index.php?$args;
}

access_log /var/log/nginx/access_log;
access_log off;
error_log /var/log/nginx/error_log error;

error_page 403 = 404;
location /\. { access_log off; log_not_found off; deny all; }
location $ { access_log off; log_not_found off; deny all; }
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

# Mengaktifkan Kompresi gzip
gzip on;
gzip_comp_level 9;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";

gzip_types text/plain text/css text/j4vascript text/js text/xml application/json application/j4vascript application/x-j4vascript application/xml application/xml+rss application/x-font-ttf image/svg+xml font/opentype;

# Caching
location * \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
location * \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }
location * \.(js)$ { access_log off; log_not_found off; expires 7d; add_header Cache-Control "public, no-transform"; }

# PHP
location \.php?$ {
try_files $uri = 404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_split_path_info ^(.+\.php)(.*)$;
# Menyembuyikan gosip versi
fastcgi_hide_header X-Powered-By;
}
}

Cek konfigurasi Nginx


nginx -t

Jika keterangannya sudah OK, restart Nginx


systemctl restart nginx

Uji Coba


Waktunya uji coba dengan SSLLabs Test, jadinya harusnya A+ menyerupai idnetter.com berikut ini aku sertakan screenshotnya


s Encrypt di Nginx web server dengan score A Cara install Let’s Encrypt di Nginx (score A+)


 


Selamat mencoba, semoga berhasil A+ juga.


Jika Anda ingin mendapat score A+ tanpa repot dan kuatir situs Anda down, jangan ragu untuk kontak aku di 0812 3500 8433 via WA untuk order jasa install SSL dengan score terbaik.


Update: 25 Februari 2019


Sumber https://idnetter.com

Mari berteman dengan saya

Follow my Instagram _yudha58

Subscribe to receive free email updates:

0 Response to "Cara Install Let’S Encrypt Di Nginx (Score A+)"

Posting Komentar