Let’s Encrypt adalah Certificate Authority (CA) yang menyediakan cara mudah untuk mendapatkan dan menginstal sertifikat TLS / SSL gratis, sehingga memungkinkan HTTPS terenkripsi pada server web.

Let’s Encrypt menyederhanakan proses dengan menyediakan klien perangkat lunak, Certbot, yang mencoba mengotomatisasi sebagian besar langkah-langkah yang diperlukan. Saat ini, seluruh proses mulai dari memperoleh dan menginstal sertifikat sepenuhnya otomatis di Apache dan Nginx.

Dalam tutorial ini, Anda akan menggunakan Certbot untuk mendapatkan sertifikat SSL gratis untuk Apache di Ubuntu 18.04 dan mengatur sertifikat Anda untuk memperbarui secara otomatis.

Persiapan

Untuk mengikuti Tutorial ini Anda Membutuhkan :

  • Satu server Ubuntu 18.04 disiapkan dengan mengikuti pengaturan server awal ini untuk tutorial Ubuntu 18.04, termasuk pengguna non-root sudo dan firewall.
  • Nama domain yang sepenuhnya terdaftar. Tutorial ini akan menggunakan example.com secara keseluruhan. Anda dapat membeli nama domain di Namecheap, atau menggunakan registrar lain pilihan Anda.
  • Apache diinstal dengan mengikuti Cara Menginstal Apache pada Ubuntu 18.04. Pastikan Anda memiliki file host virtual untuk domain Anda. Tutorial ini akan menggunakan /etc/apache2/sites-available/example.com.conf sebagai contoh.

Langkah 1 — Install Certbot

Langkah pertama untuk menggunakan Let’s Encrypt untuk mendapatkan sertifikat SSL adalah menginstal perangkat lunak Certbot di server Anda.

Certbot sedang dalam pengembangan yang sangat aktif, sehingga paket-paket Certbot yang disediakan oleh Ubuntu cenderung usang. Namun, pengembang Certbot mempertahankan repositori perangkat lunak Ubuntu dengan versi terbaru, jadi kami akan menggunakan repositori itu sebagai gantinya.

Pertama, tambahkan repositori dan Install Certbot:

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache

Certbot sekarang siap digunakan, tetapi agar dapat mengkonfigurasi SSL untuk Apache, kita perlu memverifikasi beberapa konfigurasi Apache.

Langkah 2 — Set Up SSL Certificate

Certbot harus dapat menemukan host virtual yang benar di konfigurasi Apache Anda agar dapat mengkonfigurasi SSL secara otomatis. Secara khusus, ini dilakukan dengan mencari direktif ServerName yang cocok dengan domain yang Anda minta untuk diberi sertifikat.

Jika Anda mengikuti langkah penyiapan virtual host di tutorial instalasi Apache, Anda harus memiliki blok VirtualHost untuk domain Anda di /etc/apache2/sites-available/example.com.conf dengan direktif ServerName yang telah ditetapkan dengan tepat.

Untuk memeriksa, buka file virtual host untuk domain Anda menggunakan nano atau teks editor favorit Anda:

sudo nano /etc/apache2/sites-available/example.com.conf

Temukan yang ada baris ServerName. Seharusnya terlihat seperti ini

...
ServerName example.com;
...

Jika iya memang ada, keluarlah dari editor Anda dan lanjutkan ke langkah berikutnya.

Jika tidak, perbarui untuk mencocokkan. Kemudian simpan file, keluar dari editor Anda, dan verifikasi sintaks edit konfigurasi Anda:

sudo apache2ctl configtest

Jika Anda mendapatkan pesan error, buka kembali file virtual host dan periksa apakah ada kesalahan ketik atau karakter yang hilang. Setelah sintaks file konfigurasi Anda benar, muat ulang Apache untuk memuat konfigurasi baru:

sudo systemctl reload apache2

Certbot sekarang dapat menemukan blok VirtualHost yang benar dan memperbaruinya.

Selanjutnya, mari perbarui firewall untuk mengizinkan lalu lintas HTTPS.

Langkah 3 — Izinkan HTTPS Melewati Firewall

Jika Anda memiliki ufw firewall aktif, seperti yang direkomendasikan oleh panduan permulaan, Anda harus menyesuaikan pengaturan untuk memungkinkan lalu lintas HTTPS. Untungnya, Apache mendaftarkan beberapa profil dengan ufw ketika instalasi.

Anda dapat melihat pengaturan saat ini dengan mengetik:

sudo ufw status

Mungkin akan terlihat seperti ini, artinya hanya lalu lintas HTTP yang diizinkan ke server web:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

Untuk tambahan agar firewall mengizinkan lalu lintas HTTPS, izinkan profil Apache Full dan hapus profil Apache yang berlebihan:

sudo ufw allow 'Apache Full'

sudo ufw delete allow 'Apache'

Status Anda sekarang akan terlihat seperti ini :

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache Full                ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache Full (v6)           ALLOW       Anywhere (v6)        

Selanjutnya, mari kita jalankan Certbot dan ambil sertifikat.

Langkah 4 — Memperoleh Sertifikat SSL

Certbot menyediakan berbagai cara untuk mendapatkan sertifikat SSL melalui plugin. Plugin Apache akan mengatur ulang konfigurasi Apache dan memuat ulang konfigurasi kapan pun diperlukan. Untuk menggunakan plugin ini, ketikkan yang berikut ini:

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

Perintah ini akan menjalankan certbot dengan plugin --apache, menggunakan -d untuk menentukan nama yang Anda inginkan untuk sertifikatnya.

Jika ini adalah pertama kalinya Anda menjalankan certbot, Anda akan diminta untuk memasukkan alamat email dan menyetujui persyaratan layanan. Setelah melakukannya, certbot akan berkomunikasi dengan server Let’s Encrypt, lalu jalankan tantangan untuk memverifikasi bahwa Anda mengontrol domain yang Anda minta di beri sertifikat.

Jika berhasil, certbot akan bertanya bagaimana Anda ingin mengonfigurasi pengaturan HTTPS Anda

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Pilih opsi 1 atau 2 lalu tekan ENTER. Konfigurasi akan diperbarui, dan Apache akan memuat ulang untuk menerapkan pengaturan baru. certbot akan membungkus dengan pesan yang memberitahukan Anda bahwa prosesnya berhasil dan di mana sertifikat Anda disimpan:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2019-04-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Sertifikat Anda telah berhasil diunduh, diinstal, dan dimuat. Coba muat ulang situs web Anda menggunakan https:// dan perhatikan indikator keamanan browser Anda. Jika Anda menguji server Anda menggunakan SSL Labs Server Test, itu akan mendapatkan nilai A.

Mari kita selesaikan dengan menguji proses pembaruan.

Langkah 5 — Memverifikasi Update Otomatis Certbot

Sertifikat Let’s Encrypt hanya berlaku selama sembilan puluh hari. Ini adalah metode untuk mendorong pengguna mengotomatiskan proses perpanjangan sertifikat mereka.

Paket certbot yang kita instal menangani hal ini dengan menambahkan skrip pembaruan ke /etc/cron.d. Skrip ini berjalan dua kali sehari dan secara otomatis akan memperbarui sertifikat apa pun yang dalam waktu tiga puluh hari kedaluwarsa.

Untuk menguji proses pembaruan, Anda dapat melakukan dry run dengan certbot:

sudo certbot renew --dry-run

Jika Anda tidak melihat pesan kesalahan, berarti anda telah berhasil. Jika perlu, Certbot akan memperbarui sertifikat Anda dan memuat ulang Apache untuk menerapkan perubahan.

Jika proses pembaruan otomatis gagal, Let’s Encrypt akan mengirim pesan ke email yang Anda tentukan, memperingatkan Anda ketika sertifikat Anda akan segera berakhir.