Sudah hampir setahun saya tidak menulis blog lagi, hari ini ketika membuka website saya di https://gisari.com muncul warning (sertifikat ssl bermasalah) sehingga oleh browser google chrome, dianggap website yang berbahaya. Oke, untuk itu saya akan membagikan langkah apa saja untuk memperbaiki kendala tersebut.
1. Install Certbot
Tambahkan repository certbot dan install versi terakhir dengan apt
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
Install package certbot untuk Nginx
$ sudo apt install python-certbot-nginx
2. Izinkan HTTPS di konfigurasi firewall
untuk mengaktifkan firewall
$ sudo ufw enable
untuk mengizinkan trafik HTTPS di firewall
$ sudo ufw allow "Nginx HTTPS"
3. Generate Sertifikat SSL dari Certbot
$ sudo certbot --nginx certonly
isikan email dan setujui "terms and conditions", jika muncul daftar domain, enter saja
certbot client akan mengenerate sertifikat domain Anda, setelah generate, certbot akan memberitahukan dimana letak path ssl key yang dihasilkan
4. Install / Konfigurasi Sertifikat SSL
Buka konfigurasi Nginx dengan menambah dan mengedit beberapa baris
$ sudo nano /etc/nginx/sites-available/yourdomain.com
pada script di dalam server { .....}
ganti
listen 80;
dengan
listen 443 ssl http2;
kemudian tambahkan path sertifikat ssl di bawah script server_name
ssl_certificate harus diisi dengan path file fullchain.pem
ssl_certificate_key harus diisi dengan path file privkey.pem
ssl_certificate /etc/letsencrypt/live/gisari.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gisari.com/privkey.pem;
5. Redirect Nginx untuk meneruskan trafik HTTP ke HTTPS
taruhlah blok script di bawah ini di atas server block nginx conf Anda untuk meredirect request http dan request tanpa www ke https dengan www
server { listen [::]:80;
listen 80;
server_name yourdomainname.com www.yourdomainname.com;
# redirect http to https www
return 301 https://www.yourdomainname.com$request_uri;
}
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name yourdomainname.com;
ssl_certificate /etc/letsencrypt/live/yourdomainname.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomainname.com/privkey.pem;
root /home/username/yourdomainname.com/public/;
index index.html index.php;
# redirect https non-www to https www
return 301 https://www.yourdomainname.com$request_uri;
}
http2 adalah meng-enable protocol HTTP/2
bismillah, dan simpan konfigurasi serta restart Nginx agar bekerja sesuai harapan
6. Memperbaharui Sertifikat SSL
sayangnya, sertifikat yang dibuat let's encrypt ini hanya valid untuk 90 hari saja (sudah capai-capai konfigurasi), tapi tenang, kita akan membuat scheduler / cronjob untuk mengecek dan memperbarui lisensinya
$ sudo crontab -e
pilih "nano" saja yang gampang
tambahkan baris ini
$ 0 0,12 * * * certbot renew >/dev/null 2>&1
maksudnya script di atas adalah untuk mengecek dan memperbarui 2 kali sehari
7. Verifikasi Sertifikat SSL
Semua proses telah selesai, saatnya memastikan ssl kita sudah berhasil atau belum, dengan cara buka website Anda