Let’s Encrypt adalah Otoritas Sertifikat (CA) yang menyediakan cara mudah untuk memperoleh dan menginstal sertifikat TLS/SSL gratis, yang dengan demikian mengaktifkan HTTPS terenkripsi pada server web. Ini menyederhanakan proses dengan menyediakan klien perangkat lunak, Certbot, yang berusaha mengotomatiskan sebagian besar (jika bukan semua) langkah yang diperlukan. Saat ini, seluruh proses memperoleh dan menginstal sertifikat secara sepenuhnya berjalan otomatis baik pada Apache dan Nginx.
Dalam tutorial ini, Anda akan menggunakan Certbot untuk memperoleh sertifikat SSL gratis untuk Nginx pada Ubuntu 20.04 dan menyiapkan sertifikat Anda untuk diperbarui secara otomatis.
Tutorial ini akan menggunakan berkas konfigurasi server Nginx terpisah, alih-alih berkas asali. Kami menyarankan menciptakan berkas blok server Nginx baru untuk setiap domain karena hal ini membantu menghindari kesalahan umum dan mempertahankan berkas asali sebagai konfigurasi fallback.
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.
example.com
yang menunjuk ke alamat IP publik server Anda.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 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.
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:
...
server_name example.com www.example.com;
...
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.
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:
OutputStatus: 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
OutputStatus: 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.
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.
OutputPlease 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):
Tentukan pilihan Anda lalu tekan ENTER
. Konfigurasi akan diperbarui, dan Nginx akan memuat ulang untuk menerapkan pengaturan baru. certbot
akan merangkum dengan pesan yang memberi tahu Anda bahwa proses berhasil dan di mana tempat sertifikat Anda disimpan:
OutputIMPORTANT 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 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- 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 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.
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.
Dalam tutorial ini, Anda telah menginstal certbot
klien Let’s Encrypt, mengunduh sertifikat SSL untuk domain Anda, mengonfigurasi Nginx untuk menggunakan sertifikat ini, dan menyiapkan pembaruan sertifikat otomatis. Jika Anda memiliki pertanyaan lebih lanjut tentang cara menggunakan Certbot, dokumentasi resmi ini adalah tempat yang baik untuk memulai.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.