Instalasi & Konfigurasi Let’s Encrypt SSL Menggunakan Nginx di CentOS 6

Berdasarkan informasi dari Wikipedia, Let’s Encrypt adalah certificate authority yang diluncurkan pada tanggal 12 April 2016. Let’s Encrypt menyediakan X.509 certificates untuk enkripsi Transport Layer Security (TLS) melalui proses otomatis yang dirancang untuk menghilangkan proses manual saat ini. Mulai dari proses pembuatan, validasi, signing, instalasi, and pembaruan sertifikat.

Di dalam artikel ini saya akan menjelaskan tentang bagaimana proses Intalasi & Konfigurasi Let’s Encrypt SSL Menggunakan Nginx di CentOS 6. Untuk proses instalasi Nginx silahkan bisa dilihat di Installasi Nginx, PHP FPM 5.4 dan MySQL 5.5 di CentOS 6

Download dan Install Let’s Encrypt

Sebelum mulai untuk proses instalasi, pastikan bahwa kita udah menginstall git package

yum install git

Setelah itu download Let’s Encrypt dari Official Repo Let’s Encrypt di Gtihub

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Konfigurasi Virtual Host Nginx

Setelah itu kita lanjutkan untuk proses konfigurasi virtual host Nginx agar nantinya website kita default ketika diakses akan redirect ke https. Untuk demo ini saya akan menggunakan subdomain https://secure.bukancoder.co/

Masuk ke direktori pengaturan virtual host nginx

cd /etc/nginx/sites-available

Setelah itu kita buat virtual host untuk domain yang ingin kita gunakan

nano secure.bukancoder.co.conf

Lalu beginilah kira-kira gambaran isi file untuk secure.bukancoder.co.conf

server {
listen 443 http2 ssl;
listen 80;

server_name secure.bukancoder.co;

if ($scheme = http) {
return 301 https://$server_name$request_uri;
}

ssl_certificate /etc/letsencrypt/live/secure.bukancoder.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/secure.bukancoder.co/privkey.pem;

########################################################################
# from https://cipherli.st/ #
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html #
########################################################################

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

##################################
# END https://cipherli.st/ BLOCK #
##################################

ssl_dhparam /etc/ssl/certs/dhparam.pem;

location ~ /.well-known {
allow all;
}
error_log /home/teguh/www/secure.bukancoder.co/error.log;
access_log /home/teguh/www/secure.bukancoder.co/access.log;
root /home/teguh/www/secure.bukancoder.co/public_html;

location / {
index index.php index.html index.htm;
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/teguh/www/secure.bukancoder.co/public_html$fastcgi_script_name;
include fastcgi_params;
}
}

Ganti bagian yang sudah saya tandai dengan warna merah, setelah tu CTRL + X kemudian Y dan enter. Setelah itu buatlah symlink untuk config file tersebut

ln -s /etc/nginx/sites-available/secure.bukancoder.co.conf /etc/nginx/sites-enabled/secure.bukancoder.conf

Mendaftarkan SSL Certificate

Sebelumnya kita harus berpindah ke direktori Let’s Encrypt

cd /opt/letsencrypt

Setelah itu kita lanjutkan untuk proses mendaftarkan SSL Certificate untuk domain kita, untuk demo saya akan menggunakan secure.bukancoder.co. Pastikan untuk proses yang menggunakan port 80 dan 443 harus dimatikan terlebih dahulu. Pastikan juga untuk module python virtualenv dan pip sudah ter-install dengan baik

service nginx stop
yum -y --enablerepo=epel install python-virtualenv python-pip

Setelah itu baru lanjutkan untuk proses mendaftarkan SSL Certificate untuk domain kita

sudo -H ./letsencrypt-auto certonly --standalone -d secure.bukancoder.co

Selanjutnya email kita akan diminta dan kita juga diminta untuk membaca agreement. Jika berhasil maka tampilannya seperti berikut ini

Generate Strong Diffie-Hellman Group

Untuk lebih meningkatkan keamanan, generate strong Diffie-Hellman Group. Proses ini akan lumayan menghabiskan waktu

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Jika proses mendaftarkan SSL Certificate terlah berhasil, kita sudah bisa untuk kembali menjalankan Nginx

service nginx start

Berikut hasil untuk SSL Test

Sekian dari saya untuk bahasan Instalasi & Konfigurasi Let’s Encrypt SSL Menggunakan Nginx di CentOS 6. Semoga bermanfaat

Terima kasih

Salam,
Teguh Aprianto

No Responses

Add a Comment