Let's Encrypt

Pendahuluan

Let's Encrypt adalah Otoritas Sertifikat (CA) yang memfasilitasi perolehan dan pemasangan sertifikat TLS/SSL gratis, sehingga memungkinkan HTTPS terenkripsi di server web. CA ini menyederhanakan proses dengan menyediakan klien perangkat lunak, Certbot, yang berupaya mengotomatiskan sebagian besar (jika tidak semua) langkah yang diperlukan. Saat ini, seluruh proses perolehan dan pemasangan sertifikat sepenuhnya otomatis di Apache dan Nginx.

Dalam panduan ini, Anda akan menggunakan Certbot untuk mendapatkan sertifikat SSL gratis untuk Apache di Ubuntu dan memastikan sertifikat ini diatur untuk diperbarui secara otomatis.

Tutorial ini menggunakan berkas host virtual terpisah, bukan berkas konfigurasi default Apache, untuk menyiapkan situs web yang akan diamankan oleh Let's Encrypt. Kami menyarankan untuk membuat berkas host virtual Apache baru untuk setiap domain yang dihosting di server karena hal ini membantu menghindari kesalahan umum dan mempertahankan berkas konfigurasi default sebagai pengaturan cadangan.

Prasyarat

Untuk mengikuti tutorial ini, Anda memerlukan:

  • Satu server Ubuntu yang telah disiapkan dengan pengguna non-root dengan hak akses administratif sudo dan firewall yang diaktifkan. Anda dapat mengaturnya dengan mengikuti tutorial pengaturan server awal kami untuk Ubuntu.

  • Nama domain yang terdaftar sepenuhnya. Tutorial ini akan menggunakan your_domain sebagai contoh. Anda dapat membeli nama domain di Namecheap, mendapatkannya secara gratis di Freenom, atau menggunakan pendaftar domain pilihan Anda.

  • Kedua catatan DNS berikut telah disiapkan untuk server Anda. Anda dapat mengikuti pengantar DNS DigitalOcean ini untuk detail tentang cara menambahkannya.
    • A record dengan your_domain yang mengarah ke alamat IP publik server Anda.

    • A record dengan www.your_domain yang mengarah ke alamat IP publik server Anda.

  • Apache telah diinstal dengan mengikuti Cara Menginstal Apache di Ubuntu. Pastikan Anda memiliki berkas host virtual untuk domain Anda. Tutorial ini akan menggunakan /etc/apache2/sites-available/your_domain.conf sebagai contoh.

Langkah 1 — Menginstal Certbot

Untuk mendapatkan sertifikat SSL dengan Let's Encrypt, Anda perlu menginstal perangkat lunak Certbot di server Anda. Anda akan menggunakan repositori paket Ubuntu default untuk itu.

Pertama, perbarui indeks paket lokal:

$ sudo apt update

Anda memerlukan dua paket: certbot dan python3-certbot-apache. Paket terakhir adalah plugin yang mengintegrasikan Certbot dengan Apache, sehingga Anda dapat mengotomatiskan perolehan sertifikat dan mengonfigurasi HTTPS di server web Anda hanya dengan satu perintah:

$ sudo apt install certbot python3-certbot-apache

Anda akan diminta untuk mengonfirmasi instalasi dengan menekan Y, lalu ENTER.

Certbot kini telah terinstal di server Anda. Pada langkah berikutnya, Anda akan memverifikasi konfigurasi Apache untuk memastikan host virtual Anda telah diatur dengan benar. Ini akan memastikan bahwa skrip klien Certbot dapat mendeteksi domain Anda dan mengonfigurasi ulang server web Anda agar dapat menggunakan sertifikat SSL yang baru dibuat secara otomatis.

Langkah 2 — Memeriksa Konfigurasi Host Virtual Apache Anda

Untuk mendapatkan dan mengonfigurasi SSL secara otomatis untuk server web Anda, Certbot perlu menemukan host virtual yang tepat dalam berkas konfigurasi Apache Anda. Nama domain server Anda akan diambil dari direktif ServerName dan ServerAlias ​​yang ditentukan dalam blok konfigurasi VirtualHost Anda.

Jika Anda mengikuti langkah penyiapan host virtual dalam tutorial instalasi Apache, Anda seharusnya telah menyiapkan blok VirtualHost untuk domain Anda di /etc/apache2/sites-available/your_domain.conf dengan direktif ServerName dan juga ServerAlias ​​yang telah diatur dengan benar.

Untuk memastikan hal ini telah diatur, buka berkas host virtual untuk domain Anda menggunakan nano atau editor teks pilihan Anda:

$ sudo nano /etc/apache2/sites-available/``your_domain``.conf

Temukan baris ServerName dan ServerAlias ​​yang ada. Baris-baris tersebut seharusnya tercantum sebagai berikut:

/etc/apache2/sites-available/your_domain.conf
...

ServerName your_domain ServerAlias www.your_domain

... Jika Anda sudah mengatur ServerName dan ServerAlias ​​seperti ini, Anda dapat keluar dari editor teks dan melanjutkan ke langkah berikutnya. Jika konfigurasi host virtual Anda saat ini tidak sesuai dengan contoh, perbarui konfigurasi tersebut. Jika Anda menggunakan nano, Anda dapat keluar dengan menekan CTRL+X, lalu Y dan ENTER untuk mengonfirmasi perubahan Anda, jika ada. Kemudian, jalankan perintah berikut untuk memvalidasi perubahan Anda:

$ sudo apache2ctl configtest

Anda seharusnya menerima pesan Syntax OK sebagai respons. Jika Anda mendapatkan pesan kesalahan, buka kembali berkas host virtual dan periksa apakah ada kesalahan ketik atau karakter yang hilang. Setelah sintaks berkas konfigurasi Anda benar, muat ulang Apache agar perubahan diterapkan:

$ sudo systemctl reload apache2

Dengan perubahan ini, Certbot akan dapat menemukan blok VirtualHost yang tepat dan memperbaruinya.

Selanjutnya, Anda akan memperbarui firewall untuk mengizinkan lalu lintas HTTPS.

Langkah 3 — Mengizinkan HTTPS Melewati Firewall

Peringatan

Lewati langkah 3 ini jika Anda menggunakan GCP atau AWS

Jika firewall UFW Anda diaktifkan, seperti yang direkomendasikan oleh panduan prasyarat, Anda perlu menyesuaikan pengaturan untuk mengizinkan lalu lintas HTTPS. Setelah instalasi, Apache akan mendaftarkan beberapa profil aplikasi UFW yang berbeda. Anda dapat memanfaatkan profil Apache Full untuk mengizinkan lalu lintas HTTP dan HTTPS di server Anda.

Untuk memverifikasi jenis lalu lintas yang saat ini diizinkan di server Anda, periksa statusnya:

$ sudo ufw status

Jika Anda mengikuti salah satu panduan instalasi Apache kami, Anda akan mendapatkan keluaran yang mirip dengan berikut ini, artinya saat ini hanya lalu lintas HTTP pada port 80 yang diizinkan:

Output
Status: active

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

Untuk mengizinkan lalu lintas HTTPS, izinkan profil “Apache full”:

$ sudo ufw allow 'Apache Full'

Kemudian hapus profil “Apache” yang berlebihan:

$ sudo ufw delete allow 'Apache'

Status Anda akan ditampilkan sebagai berikut:

$ sudo ufw status

Output
Status: active

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

Anda sekarang siap menjalankan Certbot dan memperoleh sertifikat Anda.

Langkah 4 — Mendapatkan Sertifikat SSL

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

$ sudo certbot --apache

Skrip ini akan meminta Anda untuk menjawab serangkaian pertanyaan guna mengonfigurasi sertifikat SSL Anda. Pertama, skrip akan menanyakan alamat email yang valid. Email ini akan digunakan untuk notifikasi pembaruan dan pemberitahuan keamanan:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): you@your_domain

Setelah memberikan alamat email yang valid, tekan ENTER untuk melanjutkan ke langkah berikutnya. Anda kemudian akan diminta untuk mengonfirmasi apakah Anda menyetujui persyaratan layanan Let's Encrypt. Anda dapat mengonfirmasi dengan menekan Y lalu ENTER:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: ``Y``

Selanjutnya, Anda akan ditanya apakah Anda ingin membagikan email Anda dengan Electronic Frontier Foundation untuk menerima berita dan informasi lainnya. Jika Anda tidak ingin berlangganan konten mereka, tulis N. Jika tidak, tulis Y lalu tekan ENTER untuk melanjutkan ke langkah berikutnya:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: ``N``

Langkah selanjutnya akan meminta Anda untuk memberi tahu Certbot domain mana yang ingin Anda aktifkan HTTPS-nya. Nama domain yang terdaftar diperoleh secara otomatis dari konfigurasi host virtual Apache Anda, jadi penting untuk memastikan Anda telah mengonfigurasi pengaturan ServerName dan ServerAlias ​​yang benar di host virtual Anda. Jika Anda ingin mengaktifkan HTTPS untuk semua nama domain yang terdaftar (disarankan), Anda dapat membiarkan prompt kosong dan menekan ENTER untuk melanjutkan. Jika tidak, pilih domain yang ingin Anda aktifkan HTTPS-nya dengan mencantumkan setiap nomor yang sesuai, dipisahkan dengan koma dan/atau spasi, lalu tekan ENTER:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: your_domain
2: www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Setelah langkah ini, konfigurasi Certbot selesai, dan Anda akan diberikan pernyataan akhir tentang sertifikat baru Anda dan lokasi file yang dihasilkan:

**Output**
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-07-10.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Successfully deployed certificate for www.your_domain.com to /etc/apache2/sites-available/your_domain-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https:/your_domain and https://www.your_domain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 kini telah terpasang dan dimuat ke dalam konfigurasi Apache. Coba muat ulang situs web Anda menggunakan https:// dan perhatikan indikator keamanan peramban Anda. Indikator ini akan menunjukkan bahwa situs Anda terlindungi dengan baik, biasanya ditandai dengan ikon gembok di bilah alamat.

Anda dapat menggunakan SSL Labs Server Test untuk memverifikasi peringkat sertifikat Anda dan mendapatkan informasi detailnya, dari perspektif layanan eksternal.

Pada langkah selanjutnya dan terakhir, Anda akan menguji fitur perpanjangan otomatis Certbot, yang menjamin bahwa sertifikat Anda akan diperpanjang secara otomatis sebelum tanggal kedaluwarsa.

Langkah 5 — Memverifikasi Perpanjangan Otomatis Certbot

Sertifikat Let’s Encrypt hanya berlaku selama sembilan puluh hari. Hal ini bertujuan untuk mendorong pengguna mengotomatiskan proses perpanjangan sertifikat mereka, sekaligus memastikan bahwa sertifikat yang disalahgunakan atau kunci yang dicuri akan kedaluwarsa lebih cepat.

Paket certbot yang Anda instal menangani perpanjangan dengan menyertakan skrip pembaruan ke /etc/cron.d, yang dikelola oleh layanan systemctl bernama certbot.timer. Skrip ini berjalan dua kali sehari dan akan secara otomatis memperbarui sertifikat apa pun yang akan kedaluwarsa dalam waktu tiga puluh hari.

Untuk memeriksa status layanan ini dan memastikannya aktif, jalankan perintah berikut:

$ sudo systemctl status certbot.timer

Output
- certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset:>
     Active: active (waiting) since Mon 2022-04-11 20:52:46 UTC; 4min 3s ago
    Trigger: Tue 2022-04-12 00:56:55 UTC; 4h 0min left
   Triggers:  certbot.service

Apr 11 20:52:46 jammy-encrypt systemd[1]: Started Run certbot twice daily.

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

$ sudo certbot renew --dry-run

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/your_domain.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for your_domain and www.your_domain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/your_domain/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Jika tidak ada kesalahan, Anda sudah siap. Bila perlu, Certbot akan memperbarui sertifikat Anda dan memuat ulang Apache untuk mengambil perubahan. Jika proses pembaruan otomatis gagal, Let's Encrypt akan mengirimkan pesan ke email yang Anda tentukan, memperingatkan Anda saat sertifikat Anda akan segera kedaluwarsa.

Kesimpulan

Dalam tutorial ini, Anda telah menginstal klien certbot Let's Encrypt, mengonfigurasi dan memasang sertifikat SSL untuk domain Anda, serta memastikan bahwa layanan perpanjangan otomatis Certbot aktif dalam systemctl. Jika Anda memiliki pertanyaan lebih lanjut tentang penggunaan Certbot, dokumentasi mereka adalah tempat yang tepat untuk memulai.