Prasyarat

Untuk mengikuti tutorial ini, Anda akan membutuhkan:

  • Satu server Ubuntu 20.04 yang disiapkan dengan mengikuti tutorial penyiapan server awal untuk Ubuntu 20.04 ini, termasuk satu pengguna non-root yang mendukung sudo dan satu firewall.

  • Nama domain yang terdaftar. Tutorial ini akan menggunakan example.com di seluruh bagiannya. Anda dapat membeli nama domain dari Namecheap, mendapatkan nama domain gratis dengan Freenom, atau menggunakan registrar domain pilihan Anda.

  • Kedua catatan DNS berikut disiapkan untuk server Anda. Jika Anda menggunakan DigitalOcean, silakan lihat dokumentasi DNS kami untuk detail tentang cara menambahkannya.

    • Catatan A dengan example.com yang menunjuk ke alamat IP publik server Anda.

    • Catatan A dengan www.example.com yang menunjuk ke alamat IP publik server Anda.

  • Nginx yang terinstal dengan mengikuti Cara Menginstal Nginx pada Ubuntu 20.04. Pastikan Anda memiliki blok server untuk domain Anda. Tutorial ini akan menggunakan /etc/nginx/sites-available/example.com sebagai contoh.

Langkah 1 — Menginstal Certbot

Langkah pertama untuk menggunakan Let’s Encrypt untuk memperoleh sertifikat SSL 

adalah dengan menginstal perangkat lunak Certbot pada server Anda.

Instal Certbot dan plugin Nginx dengan apt:

sudo apt install certbot python3-certbot-nginx

 

Certbot kini siap digunakan, namun agar Certbot dapat mengonfigurasi SSL secara 

otomatis untuk Nginx, kita perlu memverifikasi beberapa konfigurasi Nginx.

Langkah 2 — Mengonfirmasi Konfigurasi Nginx

Certbot harus mampu menemukan blok server yang benar pada konfigurasi Nginx 

Anda agar dapat mengonfigurasi SSL secara otomatis. Secara khusus, Certbot melakukan 

ini dengan mencari arahan server_name yang sesuai dengan domain yang sertifikatnya

 Anda mintakan.

Jika Anda mengikuti langkah penyiapan blok server dalam tutorial instalasi Nginx

Anda seharusnya memiliki blok server untuk domain Anda di /etc/nginx/sites-available/example.com dengan arahan server_name yang sudah 

disiapkan dengan benar.

Untuk memeriksa, buka berkas konfigurasi untuk domain Anda dengan menggunakan nano 

atau editor teks favorit Anda:

sudo nano /etc/nginx/sites-available/example.com

Cari baris server_name yang sudah ada. Baris itu akan terlihat seperti ini:

Jika terlihat seperti itu, keluar dari editor Anda dan lanjutkan ke langkah selanjutnya.

Jika tidak, perbarui supaya sesuai. Lalu simpan berkas itu, keluar dari editor Anda, 

dan lakukan verifikasi sintaks dari editan konfigurasi Anda:

sudo nginx -t

Jika Anda mendapat pesan kesalahan, buka kembali berkas blok server dan periksa 

adanya salah tik atau karakter yang hilang. Setelah sintaks berkas konfigurasi Anda benar, 

muat ulang Nginx untuk memuat konfigurasi baru:

sudo systemctl reload nginx

Certbot sekarang dapat menemukan blok server yang benar dan memperbaruinya 

secara otomatis.

Selanjutnya, mari kita perbarui firewall untuk mengizinkan lalu lintas HTTPS.

Langkah 3 — Mengizinkan HTTPS Melewati Firewall

Jika firewall ufw Anda sudah diaktifkan, seperti yang disarankan oleh panduan prasyarat, 

Anda perlu menyesuaikan pengaturan untuk mengizinkan lalu lintas HTTPS. Untungnya,

 Nginx mendaftarkan beberapa profil dengan ufw pada saat instalasi.

Anda dapat melihat pengaturan saat ini dengan mengetik:

sudo ufw status

Mungkin akan terlihat seperti ini, artinya bahwa hanya lalu lintas HTTP yang diizinkan 

ke server web:

Output

Status: active

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere                  

Nginx HTTP                 ALLOW       Anywhere                  

OpenSSH (v6)               ALLOW       Anywhere (v6)             

Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Untuk menambahkan lalu lintas HTTPS yang masuk, mengizinkan profil Nginx Full, dan 

menghapus izin profil HTTP Nginx yang lewah:

sudo ufw allow 'Nginx Full'

sudo ufw delete allow 'Nginx HTTP'

Status Anda sekarang akan terlihat seperti ini:

sudo ufw status

Output

Status: active

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere

Nginx Full                 ALLOW       Anywhere

OpenSSH (v6)               ALLOW       Anywhere (v6)

Nginx Full (v6)            ALLOW       Anywhere (v6)

Selanjutnya, mari kita jalankan Certbot dan ambil sertifikat kita.

Langkah 4 — Memperoleh Sertifikat SSL

Certbot menyediakan berbagai cara untuk memperoleh sertifikat SSL melalui plugin. 

Plugin Nginx akan menangani konfigurasi ulang Nginx dan memuat ulang konfigurasi itu 

ketika diperlukan. Untuk menggunakan plugin ini, ketik yang berikut ini:

sudo certbot --nginx -d example.com -d www.example.com

Ini menjalankan certbot dengan plugin --nginx, menggunakan -d untuk menentukan 

nama domain yang kita ingin sertifikatnya valid digunakan.

Jika ini adalah pertama kalinya Anda menjalankan certbot, Anda akan diminta 

memasukkan alamat email dan menyetujui persyaratan layanan. Setelah melakukan itu, 

certbot akan berkomunikasi dengan server Let’s Encrypt, lalu menjalankan tantangan untuk memverifikasi bahwa Anda mengontrol domain yang Anda mintakan sertifikatnya.

Jika itu berhasil, certbot akan bertanya bagaimana Anda ingin mengonfigurasi 

pengaturan HTTPS Anda.

Sertifikat Anda sudah diunduh, terinstal, dan dimuat. Coba muat ulang situs Anda dengan 

menggunakan https:// dan perhatikan indikator keamanan di peramban Anda. Seharusnya 

ada indikasi bahwa situs itu sudah diamankan dengan benar, biasanya dengan ikon kunci. 

Jika Anda menguji server Anda menggunakan SSL Labs Server Test, server akan mendapat nilai A.

Mari kita selesaikan dengan menguji proses pembaruan ini.

Langkah 5 — Memverifikasi Pembaruan Otomatis Certbot

Sertifikat Let’s Encrypt hanya berlaku selama 90 hari. Ini dimaksudkan untuk mendorong pengguna untuk mengotomatiskan proses pembaruan sertifikat mereka. Paket certbot yang kita instal akan mengurus ini untuk kita dengan menambahkan pengatur waktu systemd yang akan berjalan dua kali sehari dan secara otomatis memperbarui sertifikat apa pun yang akan kedaluarsa dalam waktu 30 hari.

Anda dapat menanyakan status pengatur waktu dengan systemctl:

sudo systemctl status certbot.timer

Output

● certbot.timer - Run certbot twice daily

     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)

     Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago

    Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left

   Triggers: ● certbot.service

Untuk menguji proses pembaruan, Anda dapat melakukan uji coba dengan certbot:

sudo certbot renew --dry-run

Jika Anda tidak melihat kesalahan, Anda sudah siap. Ketika diperlukan, Certbot akan memperbarui sertifikat Anda dan memuat ulang Nginx untuk menerapkan perubahan itu. Jika proses pembaruan otomatis itu terus-menerus gagal, Let’s Encrypt akan mengirim pesan ke surel yang Anda tentukan, memperingatkan Anda saat sertifikat Anda akan berakhir.

untuk melihat list sertifikat bisa menggunakan perintah berikut ini :

sudo certbot certificates

Untuk membuat renew secara otomatis gunakan cron job seperti ini

sudo crontab -e

0 1 * * * /usr/bin/certbot renew >> /var/log/letsencrypt/renew.log