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;
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;
}
root /home/teguh/www/secure.bukancoder.co/public_html;
error_log /home/teguh/www/secure.bukancoder.co/error.log;
access_log /home/teguh/www/secure.bukancoder.co/access.log;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
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;
}
}
Jangan lupa untuk mengganti secure.bukancoder.co dengan url milik kamu.. 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.