Cara Install dan Konfigurasi Let's Encrypt di Server Nginx

Jumat, 13 Januari 2017

Cara Install dan Konfigurasi Let's Encrypt di Server Nginx - Kali ini kita akan membahas cara pemasangan SSL gratis dari Let's Encrypt pada server Nginx. Mungkin ada yang lebih simple seperti SSL dari Cloudflare, namun kekurangannya saat kalian memilih free plan, akses SSL nya terbatas dan situs tidak bisa diakses di browser tertentu.
Namun dengan Let's Encrypt batasan batasan tersebut tidak ada.
Dalam tutorial kali ini saya menggunakan Ubuntu 16.04 dengan webserver Nginx. 
Oke langsung saja ke langkah langkahnya.
Pertama kita install lets encrypt.
sudo apt-get update
sudo apt-get install letsencrypt
Disini kita menggunakan Webroot Plugin untuk mendapatkan sertifikat SSL dari Lets Encrypt. Cara kerjanya sendiri dengan meletakkan beberapa kode spesial di folder /.well-known pada rootpath domain yang akan diberi SSL.
Sehingga kita harus memastikan folder tersebut terbaca . Edit melalui server block nginx .
sudo nano /etc/nginx/sites-available/site.com
Lalu masukkan kode berikut kedalam server block nya :
 location ~ /.well-known {
                allow all;
        }
Pastikan juga untuk root path domainnya tidak salah. Kalau sudah, kita test dulu apakah konfigurasinya sudah benar.
sudo nginx -t
Kalo sudah "ok" semua, kita reload nginx nya.
sudo service nginx reload
Sekarang ke tahap untuk mendapatkan sertifikat SSL nya :
sudo letsencrypt certonly -a webroot --webroot-path=/var/www/site.com -d site.com -d www.site.com
Sesuaikan sendiri untuk situs dan juga root path nya. Jangan salah.
Makan akan ada promt muncul untuk pengisian email . Hal ini untuk berjaga jaga jika sewaktu waktu kita kehilangan akses ke sertifikat SSL yang dibuat.
Jika sudah, maka sertifikat yang dibuat terletak di direktori /etc/letsencrypt .
sudo ls -l /etc/letsencrypt/live/site.com
Akan ada sertifikat yang dibuat sebelumnya. Disini nantinya kita akan mengatur server agar menggunakan fullchain.pem sebagai sertifikat dan privkey.pem sebagai kuncinya.
Untuk tambahan security, kalian juga bisa menambahkan dhparam 2048 bit.
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Pada tahap ini kita akan mengkonfigurasi agar Nginx menggunakan sertifikat SSL yang telah dibuat.
Buat sebuat file konfigurasi di /etc/nginx/snippets/ .
sudo nano /etc/nginx/snippets/ssl-site.com.conf
Lalu masukkan isinya :
ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Setelah di save kita edit serverblock nya.
sudo nano /etc/nginx/sites-available/site.com
Disini saya melakukan setting agar dari port http langsung diredirrect ke https. Langsung saja ikuti kode dibawah. Sesuaikan sendiri :)
server {
listen 80;
listen [::]:80;
server_name site.com www.site.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    include snippets/ssl-site.com.conf;
root /var/www/site.com;
index index.php index.html index.htm;
server_name site.com www.site.com;
...................................
Test kembali apa ada yang error dengan konfigurasi nginx nya.
sudo nginx -t
Jika sudah benar, reload nginx.
sudo service nginx reload
Seharusnya sekarang saat kalian mengakses situs sudah dialhkan ke https dari Let's Encrypt. 
Apakah sudah selesai?
Untuk setting di servernya memang sudah selesai. Namu perlu diketahui bahwa sertifikat letsencrypt hanya berlaku 90 hari. Disini kita akan menggunakan cronjob untuk mengatur agar letsencrypt diperbaharui secara teratur.
sudo crontab -e
Lalu masukkan baris berikut :
29 2 * * 1 /bin/systemctl stop nginx
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
31 2 * * 1 /bin/systemctl start nginx
Untuk melakukan renew pada Lets Encrypt kita harus mematikan service web server terlebih dahulu. Perintah cronjob diatas akan membuat server mengeksekusi letsencrypt renew setiap hari Minggu (hari 1) Pada jam 2 menit 30 dan menjalankan kembali server nginx pada jam 2 menit 31 .
Sekian tutorial kali ini semoga bermanfaat, jangan sungkan untuk bertanya jika ada yang dirasa susah. :)

Artikel Terkait Linux ,Nginx ,Security ,Server