Perkenalan
Let’s Encrypt adalah otoritas sertifikat (CA) yang menyediakan sertifikat gratis untuk enkripsi Transport Layer Security (TLS) . Ini menyederhanakan proses pembuatan, validasi, penandatanganan, pemasangan, dan pembaruan sertifikat dengan menyediakan klien perangkat lunak— Certbot .
Dalam tutorial ini Anda akan menyiapkan sertifikat TLS/SSL dari Let’s Encrypt di server Rocky Linux 8 yang menjalankan Nginx sebagai server web. Selain itu, Anda akan mengotomatiskan proses pembaruan sertifikat menggunakan tugas cron .
Prasyarat
Untuk menyelesaikan panduan ini, Anda memerlukan:
- Satu server Rocky Linux 8 disiapkan dengan mengikuti panduan Penyiapan Server Awal Rocky Linux 8 , termasuk pengguna non-root dengan sudo hak istimewa dan firewall.
- Nginx diinstal di server Rocky Linux 8 dengan blok server yang dikonfigurasi. Anda dapat mempelajari cara menyiapkannya dengan mengikuti tutorial kami Cara Memasang Nginx di Rocky Linux 8 .
- Nama domain yang terdaftar sepenuhnya. Tutorial ini akan digunakan your_domain sebagai contoh di seluruh. Anda dapat membeli nama domain di Namecheap , mendapatkannya gratis di Freenom , atau menggunakan pencatat domain pilihan Anda.
- Kedua catatan DNS berikut disiapkan untuk server Anda. Anda dapat mengikuti pengantar DigitalOcean DNS ini untuk detail tentang cara menambahkannya.
- Catatan A dengan your_domain menunjuk ke alamat IP publik server Anda.
- Catatan A dengan menunjuk ke alamat IP publik server Anda.www.your_domain
Langkah 1 — Memasang Certbot Let’s Encrypt Client
Pertama, Anda perlu menginstal certbot paket perangkat lunak. Masuk ke mesin Rocky Linux 8 Anda sebagai pengguna root, menggunakan putty.
Paket certbot tidak tersedia melalui pengelola paket secara default. Anda harus mengaktifkan repository EPEL untuk menginstal Certbot.
Untuk menambahkan repositori Rocky Linux 8 EPEL, gunakan dnf install:
sudo dnf install epel-release
Saat diminta untuk mengonfirmasi penginstalan, ketik dan masukkan y.
Sekarang setelah Anda memiliki akses ke repository ekstra, instal semua paket yang diperlukan:
sudo dnf install certbot python3-certbot-nginx
Ini akan menginstal Certbot itu sendiri dan plugin Nginx untuk Certbot, yang diperlukan untuk menjalankan program.
Proses instalasi akan menanyakan tentang mengimpor kunci GPG. Konfirmasikan agar penginstalan dapat diselesaikan.
Anda sekarang telah menginstal klien Let’s Encrypt, tetapi sebelum mendapatkan sertifikat, Anda perlu memastikan bahwa semua port yang diperlukan terbuka. Untuk melakukan ini, Anda akan memperbarui pengaturan firewall Anda di langkah berikutnya.
Langkah 2 — Memperbarui Aturan Firewall
Karena penyiapan prasyarat Anda mengaktifkan firewalld, Anda perlu menyesuaikan pengaturan firewall untuk mengizinkan koneksi eksternal di server web Nginx Anda.
Untuk memeriksa layanan mana yang sudah diaktifkan, jalankan perintah:
sudo firewall-cmd –permanent –list-all
Anda akan menerima output seperti ini:
Output
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Jika Anda tidak melihat http di daftar layanan, aktifkan dengan menjalankan:
sudo firewall-cmd –permanent –add-service=http
Untuk mengizinkan https lalu lintas, jalankan perintah berikut:
sudo firewall-cmd –permanent –add-service=https
Untuk menerapkan perubahan, Anda harus memuat ulang layanan firewall:
sudo firewall-cmd –reload
Sekarang setelah Anda membuka server untuk https lalu lintas, Anda siap menjalankan Certbot dan mengambil sertifikat Anda.
Langkah 3 — Mendapatkan Sertifikat
Sekarang Anda dapat meminta sertifikat SSL untuk domain Anda.
Saat membuat Sertifikat SSL untuk Nginx menggunakan certbot klien Let’s Encrypt, klien akan secara otomatis mendapatkan dan menginstal sertifikat SSL baru yang valid untuk domain yang disediakan sebagai parameter.
Jika Anda ingin menginstal satu sertifikat yang valid untuk beberapa domain atau subdomain, Anda dapat meneruskannya sebagai parameter tambahan ke perintah. Nama domain pertama dalam daftar parameter akan menjadi domain dasar yang digunakan oleh Let’s Encrypt untuk membuat sertifikat, dan oleh karena itu Anda akan memberikan nama domain tingkat atas sebagai yang pertama dalam daftar, diikuti oleh subdomain tambahan atau alias:
sudo certbot –nginx -d your_domain -d www.your_domain
Ini berjalan certbot dengan –nginx plugin, dan domain dasarnya adalah your_domain. Untuk menjalankan penginstalan interaktif dan mendapatkan sertifikat yang hanya mencakup satu domain, jalankan certbot perintah dengan:
sudo certbot –nginx -d your_domain
Utilitas certbot juga dapat meminta informasi domain selama prosedur permintaan sertifikat. Untuk menggunakan fungsi ini, panggil certbot tanpa domain apa pun:
sudo certbot –nginx
Anda akan menerima panduan langkah demi langkah untuk menyesuaikan opsi sertifikat Anda. Certbot akan meminta Anda untuk memberikan alamat email untuk pemulihan kunci yang hilang dan pemberitahuan serta menyetujui persyaratan layanan. Jika Anda tidak menentukan domain Anda pada baris perintah, Certbot akan mencari server_name arahan dan akan memberi Anda daftar nama domain yang ditemukan. Jika file blok server Anda tidak menentukan domain yang mereka layani secara eksplisit menggunakan server_name arahan, Certbot akan meminta Anda untuk memberikan nama domain secara manual.
Untuk keamanan yang lebih baik, Certbot akan secara otomatis mengonfigurasi pengalihan semua lalu lintas di port 80 ke 443.
Saat penginstalan berhasil selesai, Anda akan menerima pesan seperti ini:
Output
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2022-11-14. 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
File sertifikat yang dihasilkan akan tersedia dalam subdirektori yang diberi nama setelah domain dasar Anda di /etc/letsencrypt/live direktori.
Sekarang setelah Anda selesai menggunakan Certbot, Anda dapat memeriksa status sertifikat SSL Anda. Verifikasi status sertifikat SSL Anda dengan membuka tautan berikut di browser web pilihan Anda (jangan lupa gantiyour_domain dengan domain dasar Anda):
https://www.ssllabs.com/ssltest/analyze.html?d=your_domain
Situs ini berisi uji SSL dari SSL Labs , yang akan dimulai secara otomatis. Pada saat penulisan ini, pengaturan default akan memberikan peringkat A.
Anda sekarang dapat mengakses situs web Anda menggunakan https awalan. Namun, Anda harus memperbarui sertifikat secara berkala agar penyiapan ini tetap berfungsi. Pada langkah selanjutnya, Anda akan mengotomatiskan proses perpanjangan ini.
Langkah 4 — Menyiapkan Pembaruan Otomatis
Sertifikat Let’s Encrypt berlaku selama 90 hari, tetapi sebaiknya Anda memperbarui sertifikat setiap 60 hari untuk memungkinkan margin kesalahan. Klien Certbot Let’s Encrypt memiliki renew perintah yang secara otomatis memeriksa sertifikat yang diinstal saat ini dan mencoba memperbaruinya jika kurang dari 30 hari dari tanggal kadaluarsa.
Anda dapat menguji pembaruan otomatis untuk sertifikat Anda dengan menjalankan perintah ini:
sudo certbot renew –dry-run
Outputnya akan mirip dengan ini:
Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Processing /etc/letsencrypt/renewal/your_domain.conf
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for monitoring.pp.ua
Waiting for verification…
Cleaning up challenges
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/your_domain/fullchain.pem
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
** DRY RUN: simulating ‘certbot renew’ close to cert expiry
** (The test certificates below have not been saved.)
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/your_domain/fullchain.pem (success)
…
Perhatikan bahwa jika Anda membuat sertifikat yang dibundel dengan beberapa domain, hanya nama domain dasar yang akan ditampilkan di keluaran, tetapi perpanjangan akan berfungsi untuk semua domain yang termasuk dalam sertifikat ini.
Cara praktis untuk memastikan sertifikat Anda tidak kadaluarsa adalah membuat cron pekerjaan yang secara berkala akan menjalankan perintah perpanjangan otomatis untuk Anda. Karena pembaruan pertama kali memeriksa tanggal kadaluarsa dan hanya mengeksekusi pembaruan jika sertifikat kurang dari 30 hari dari kadaluarsa, aman untuk membuat tugas cron yang berjalan setiap minggu, atau bahkan setiap hari.
Edit crontab untuk membuat pekerjaan baru yang akan menjalankan pembaruan dua kali per hari. Untuk mengedit crontab untuk pengguna root, jalankan:
sudo crontab -e
Editor teks Anda akan membuka crontab default, yang merupakan file teks kosong pada saat ini. Masuk ke mode penyisipan dengan menekan idan menambahkan baris berikut:
crontab
0 0,12 * * * python -c ‘import random; import time; time.sleep(random.random() * 3600)’ && certbot renew –quiet
Setelah selesai, tekan ESC untuk keluar dari mode penyisipan, lalu :wq dan ENTER untuk menyimpan dan keluar dari file. Untuk mempelajari lebih lanjut tentang editor teks Vi dan penggantinya Vim, lihat tutorial Menginstal dan Menggunakan Editor Teks Vim di Server Cloud .
Ini akan membuat tugas cron baru yang akan dijalankan pada siang dan tengah malam setiap hari. python -c ‘import random; import time; time.sleep(random.random() * 3600)’akan memilih menit acak dalam satu jam untuk tugas pembaruan Anda.
Perintah renew untuk Certbot akan memeriksa semua sertifikat yang terinstal di sistem dan memperbarui sertifikat yang akan kadaluarsa dalam waktu kurang dari tiga puluh hari. –quietmemberi tahu Certbot untuk tidak menampilkan informasi atau menunggu input pengguna.
Informasi lebih rinci tentang pembaruan dapat ditemukan di dokumentasi Certbot .
Kesimpulan
Dalam panduan ini, Anda menginstal Certbot klien Let’s Encrypt, mengunduh sertifikat SSL untuk domain Anda, dan menyiapkan pembaruan sertifikat otomatis. Jika Anda memiliki pertanyaan tentang penggunaan Certbot, Anda dapat memeriksa dokumentasi resmi Certbot .
Anda juga dapat memeriksa blog resmi Let’s Encrypt untuk pembaruan penting dari waktu ke waktu.
0 Komentar