Install Certbot Apache di Ubuntu 24.04
Pasang sertifikat Let's Encrypt untuk Apache dengan satu perintah. Ubuntu 24.04 menyertakan Certbot 2.9.0 melalui apt, plus jebakan ServerName yang dapat menggagalkan penerbitan.
Yang Anda bangun
Situs Apache pada Ubuntu 24.04 yang merespons melalui HTTPS dengan sertifikat Let's Encrypt gratis dan dipercaya browser. Sertifikat ini diterbitkan oleh Certbot dan diperbarui otomatis oleh timer systemd, sehingga Anda tidak perlu memikirkannya lagi. Perintah yang melakukan semuanya hanya satu baris. Semua masalah terjadi sebelum baris tersebut dijalankan: vhost tanpa ServerName, port 80 yang ditutup pada firewall penyedia, atau DNS yang masih mengarah ke server lama. Karena itu, panduan ini sebagian besar membahas prasyarat dan mencantumkan string error yang tepat untuk setiap kesalahan.
Ada dua catatan tentang cakupan. Jika web server Anda adalah nginx, alurnya memiliki bentuk yang sama, tetapi plugin dan konfigurasinya berbeda. Gunakan versi panduan ini untuk nginx. Jika layanan yang Anda amankan hanya digunakan secara internal, misalnya panel admin pada alamat privat atau server staging yang tidak diakses pihak lain, Anda tidak memerlukan certificate authority. Sertifikat yang ditandatangani sendiri memerlukan lebih sedikit komponen dan dapat digunakan secara offline.
Prasyarat, dan tiga cara proses ini gagal sebelum Certbot berjalan
- Apache sudah menyajikan situs Anda melalui HTTP biasa. Plugin Apache milik Certbot mengubah situs yang sudah ada; plugin ini tidak membuat situs baru. Jika Anda memulai dari VPS kosong, bangun stack LAMP di Ubuntu 24.04 terlebih dahulu, lalu kembali ke sini. Panduan ini adalah bab TLS yang belum tersedia.
- Domain publik dengan A record yang mengarah ke alamat VPS Anda. Tantangan HTTP-01 dari Let's Encrypt berarti server validasi mereka terhubung ke server Anda dari Internet: homelab di balik NAT tidak dapat digunakan tanpa port forwarding, begitu juga nama
.local. HTTP-01 dapat memvalidasi IP tanpa domain, tetapi Let's Encrypt hanya menerbitkan sertifikat IP melalui profilshortlivedyang harus diaktifkan secara khusus (masa berlaku 160 jam), sedangkan Certbot 2.9.0 dari apt tidak dapat meminta profil ACME maupun alamat IP. Karena itu, panduan ini memerlukan nama domain.dig +short example.comharus mengembalikan alamat VPS Anda. Jika Anda mengubah DNS dalam satu jam terakhir, tunggu hingga TTL record lama berakhir sebelum menerbitkan sertifikat. - Jika ada AAAA record, record tersebut harus benar. Let's Encrypt selalu mencoba IPv6 terlebih dahulu jika AAAA record dipublikasikan. Jika koneksi tersebut timeout, Let's Encrypt mencoba kembali melalui IPv4, tetapi error lain tidak mendapat kesempatan kedua: AAAA yang mengarah ke alamat yang menolak koneksi, atau ke server aktif yang bukan server ini, akan menggagalkan validasi meskipun
curldari laptop Anda, kemungkinan melalui IPv4, berfungsi dengan baik. Publikasikan AAAA yang benar atau jangan publikasikan sama sekali.
Port 80 dan 443 harus terbuka di ufw dan firewall jaringan provider Anda. Sebagian besar panel hosting memiliki firewall kedua yang tidak dapat dilihat oleh OS. HTTP-01 secara khusus melakukan validasi melalui port 80; Anda tidak dapat menjalankan proses ini hanya melalui 443.
sudo ufw allow "Apache Full"
sudo ufw statusSetelah semua prasyarat tersebut terpenuhi, seluruh proses hanya memerlukan lima belas menit, dan sepuluh menit di antaranya digunakan untuk membaca.
Certbot dari Snap atau apt? Pada 24.04, apt akhirnya sudah tepat
Certbot beralih ke distribusi snap bertahun-tahun lalu karena alasan yang masuk akal: paket distro tidak lagi diperbarui. Ubuntu 20.04 menyertakan Certbot 0.40 dan tidak pernah memperbaruinya, sehingga proyek tersebut lelah melakukan debug terhadap bug yang sudah berusia lima tahun. Pada 24.04, alasan itu sudah tidak berlaku. Arsip paket menyediakan Certbot 2.9.0, rilis Februari 2024 dari lini 2.x modern, dan unattended-upgrades memasang setiap pembaruan keamanan yang diterbitkan Ubuntu untuknya. Upstream sejak itu beralih ke seri 5.x, tetapi tidak ada bagian dalam panduan ini yang memerlukannya. Rekomendasi saya untuk OS ini: gunakan apt. Anda tidak perlu menjalankan daemon snapd, plugin Apache terpasang dalam transaksi yang sama, dan timer pembaruan terintegrasi dengan systemd menggunakan cara Debian standar.
sudo apt update
sudo apt install -y certbot python3-certbot-apache
certbot --versionHasil yang benar: certbot 2.9.0. Paket python3-certbot-apache adalah plugin yang membaca dan mengubah konfigurasi Apache Anda. Tanpa paket tersebut, certbot --apache gagal dengan The requested apache plugin does not appear to be installed.
Snap tetap menjadi pilihan yang tepat dalam dua kasus: Anda ingin menggunakan Certbot terbaru pada hari rilisnya, atau Anda memerlukan plugin DNS yang hanya didistribusikan sebagai snap. Beberapa plugin penyedia certbot-dns-* termasuk di dalamnya. Jika memilih cara tersebut:
sudo apt remove -y certbot python3-certbot-apache
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbotApa pun pilihan Anda, jangan pernah menjalankan keduanya. Dua instalasi berarti ada dua penjadwal pembaruan yang saling berebut /etc/letsencrypt, dan certbot yang ditemukan shell Anda di PATH mungkin bukan instalasi yang mengelola sertifikat Anda. Baris apt remove di atas bukan sekadar hiasan dan wajib digunakan.
Vhost yang diedit Certbot harus sudah ada, ServerName adalah faktor penentu
certbot --apache bekerja dengan mencari virtual host pada port 80 yang ServerName atau ServerAlias-nya cocok dengan setiap domain -d yang Anda berikan. Setelah membuktikan kendali atas domain tersebut, certbot --apache menulis pasangan SSL dari vhost itu. Jika tidak ada ServerName yang cocok, tidak ada kecocokan. Pada Ubuntu, 000-default.conf bawaan dikirim dengan ServerName dalam keadaan dikomentari. Satu baris yang dikomentari ini adalah penyebab paling umum kegagalan perintah besar dalam panduan ini.
Jadi, sebelum menjalankan Certbot, berikan situs tersebut vhost berbasis nama yang benar. Buat /etc/apache2/sites-available/example.com.conf:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>Aktifkan vhost tersebut dan pastikan Apache dapat mem-parsing konfigurasinya serta mengarahkan nama tersebut ke vhost itu:
sudo a2ensite example.com.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
sudo apache2ctl -Sconfigtest harus mencetak Syntax OK. Jika juga mencetak AH00558: apache2: Could not reliably determine the server's fully qualified domain name, itu adalah peringatan tentang ServerName global, bukan vhost Anda. Peringatan tersebut tidak berbahaya dalam kasus ini dan dapat dibungkam dengan echo "ServerName $(hostname -f)" | sudo tee /etc/apache2/conf-available/servername.conf && sudo a2enconf servername && sudo systemctl reload apache2.
Output -S adalah pemeriksaan yang penting. Anda ingin melihat baris seperti port 80 namevhost example.com (/etc/apache2/sites-enabled/example.com.conf:1) dengan alias www.example.com di bawahnya. Apache melaporkan symlink sites-enabled yang benar-benar dibacanya, bukan file yang Anda edit di sites-available. Jika example.com tidak tercantum pada port 80, Certbot juga tidak akan menemukannya.
Terbitkan sertifikat: certbot --apache
sudo certbot --apache -d example.com -d www.example.comSaat pertama kali dijalankan, perintah ini meminta tiga hal: alamat email (Let's Encrypt tidak lagi menyimpannya bersama akun ACME Anda dan tidak lagi mengirimkan peringatan kedaluwarsa, jadi Anda harus memantau perpanjangan sendiri), persetujuan terhadap ketentuan Let's Encrypt, dan pilihan untuk membagikan alamat email Anda kepada EFF. Pertanyaan tentang pengalihan HTTP sudah tidak ada: sejak Certbot 1.0, installer Apache secara default mengalihkan HTTP ke HTTPS (pertanyaan tersebut dihapus pada 1.4), dan inilah konfigurasi yang Anda perlukan. Gunakan --no-redirect hanya jika HTTP biasa memang harus tetap menyajikan konten.
Hasil yang berhasil terlihat seperti ini. Baca seluruh hasilnya, jangan hanya memindainya sekilas:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/example.com/privkey.pem
This certificate expires on 2027-01-09.
Deploying certificate
Successfully deployed certificate for example.com to /etc/apache2/sites-available/example.com-le-ssl.conf
Successfully deployed certificate for www.example.com to /etc/apache2/sites-available/example.com-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://example.com and https://www.example.comDi balik pesan tersebut, Certbot melakukan empat hal: mengaktifkan modul Apache ssl jika belum aktif, menulis example.com-le-ssl.conf, yaitu salinan vhost Anda pada *:443 yang berisi SSLEngine on dan path sertifikat, mengaktifkan vhost tersebut, serta menambahkan blok RewriteRule ke vhost port-80 asli yang mengalihkan semua permintaan ke HTTPS dengan kode 301. File vhost asli Anda diedit, bukan diganti, sedangkan salinan SSL berada di sebelahnya sehingga Anda dapat membaca setiap baris yang ditambahkan.
Lokasi sertifikat sebenarnya, dan alasan Anda tidak pernah menyalinnya
Semua file berada di bawah /etc/letsencrypt/live/example.com/: fullchain.pem (sertifikat beserta rantai perantara, yang harus dituju oleh server), privkey.pem (kunci privat, hanya dapat dibaca oleh root), serta cert.pem dan chain.pem untuk perangkat lunak yang memerlukan komponen tersebut secara terpisah. File-file ini adalah symlink ke dalam /etc/letsencrypt/archive/. Indireksi tersebut merupakan mekanisme perpanjangan: proses perpanjangan menulis file baru ke dalam archive/ lalu mengarahkan ulang symlink. Arahkan perangkat lunak lain ke path live/ agar perangkat lunak tersebut otomatis menggunakan hasil perpanjangan. Jika Anda menyalin file ke lokasi lain, layanan Anda akan gagal setelah 90 hari.
File lain yang perlu diketahui adalah /etc/letsencrypt/renewal/example.com.conf. File ini mencatat cara sertifikat diterbitkan, authenticator = apache, installer = apache, serta domain yang digunakan. Dengan demikian, proses perpanjangan dapat mengulangi proses tersebut tanpa intervensi, termasuk memuat ulang Apache setelahnya.
Perpanjangan sudah dijadwalkan, verifikasi dan jangan membuat penjadwal baru
Sertifikat Let's Encrypt saat ini berlaku selama 90 hari secara default, dan paket apt sudah memasang mekanismenya: timer systemd yang menjalankan Certbot dua kali sehari pada waktu acak, lalu memperbarui sertifikat yang masa berlakunya akan berakhir dalam 30 hari. Jangan menambahkan cron job; penjadwal kedua tidak memberikan manfaat selain menambah log dan risiko terkena rate limit. Let's Encrypt telah mengumumkan bahwa mulai 10 Februari 2027, masa berlaku default sertifikat baru akan menjadi 64 hari. Jendela 30 hari tetap berfungsi untuk sertifikat tersebut. Perpanjangan hanya akan dilakukan sekitar hari ke-34, bukan hari ke-60. Jadi, tidak ada yang perlu diubah pada server ini.
systemctl list-timers certbot.timer
sudo certbot renew --dry-runPerintah pertama menampilkan timer yang aktif, dengan waktu NEXT dalam 24 jam berikutnya. Jadwalnya berjalan dua kali sehari dengan penundaan acak, sehingga waktu tepatnya memang tidak dapat diprediksi (pada instalasi snap, timernya adalah snap.certbot.renew.timer). Uji coba dry run melakukan simulasi perpanjangan lengkap terhadap lingkungan staging Let's Encrypt, menggunakan challenge sungguhan tetapi tanpa menerbitkan sertifikat dan tanpa mengurangi rate limit. Hasil yang benar diakhiri dengan:
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/example.com/fullchain.pem (success)Jika dry run gagal, perpanjangan yang sebenarnya dalam ~60 hari juga akan gagal dengan cara yang sama. Perbaiki sekarang, saat sertifikat yang berlaku masih memiliki sisa masa berlaku penuh. Penyebab yang umum adalah aturan firewall yang ditambahkan setelah penerbitan sertifikat dan kembali menutup port 80.
Verifikasi dengan curl dan isi yang seharusnya ditampilkan ikon gembok
curl -sI http://example.com | head -n 3
curl -I https://example.com
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -datesPerintah pertama seharusnya mengembalikan HTTP/1.1 301 Moved Permanently dengan header Location: https://example.com/. Itulah redirect yang dipasang Certbot. Perintah kedua seharusnya mengembalikan HTTP/1.1 200 OK tanpa keluhan TLS dari curl. Perintah ketiga menampilkan penerbit, yaitu baris O = Let's Encrypt dengan CN singkat seperti YE1 atau YE2 (kunci ECDSA), atau YR1 atau YR2 (kunci RSA), serta notAfter yang masa berlakunya kira-kira 90 hari lagi. Sertifikat yang diterbitkan sebelum Let's Encrypt menghentikan penggunaan intermediate lama mungkin masih menampilkan CN seperti R12 atau E7 hingga pembaruan berikutnya. Itu bukan error. Di browser, ikon gembok akan ditampilkan, dan saat diklik akan terlihat penerbit yang sama. Jika curl berfungsi tetapi browser menampilkan peringatan, hampir dapat dipastikan Anda sedang melihat halaman yang tersimpan dalam cache atau hostname yang salah, bukan mengalami masalah sertifikat.
Situs ganda: satu sertifikat SAN atau satu sertifikat per situs
Keduanya dapat digunakan dan diperbarui dengan cara yang sama. Untuk situs yang tidak saling terkait pada server yang sama, jalankan perintah issue sekali untuk setiap situs. Masing-masing situs mendapatkan direktorinya sendiri di bawah live/ dan konfigurasi pembaruannya sendiri. Masalah pada satu domain tidak akan pernah menghambat pembaruan domain lain. Ini adalah pilihan default saya.
Untuk satu situs dengan beberapa nama, gunakan satu sertifikat SAN. Satu sertifikat dapat memuat hingga 100 nama. Anda sudah melakukannya di atas dengan example.com dan www.example.com. Untuk menambahkan nama ke sertifikat yang sudah ada, terbitkan ulang sertifikat tersebut dengan menyebutkan nama sertifikat dan daftar baru yang lengkap:
sudo certbot --apache --cert-name example.com -d example.com -d www.example.com -d blog.example.comCertbot mendeteksi perubahan pada kumpulan domain, meminta konfirmasi untuk memperluasnya, lalu mengganti sertifikat di lokasi yang sama, yaitu path live/. Dengan demikian, tidak ada hal lain yang perlu diubah. Perhatikan bahwa daftar tersebut menggantikan daftar sebelumnya, bukan menambahkan isinya. Jika Anda menghilangkan www dari perintah tersebut, sertifikat baru akan menghapusnya tanpa menampilkan peringatan.
Wildcard memerlukan DNS-01, dan biasanya Anda tidak memerlukan wildcard
HTTP-01 tidak dapat menerbitkan *.example.com. Menempatkan file pada web server membuktikan kendali atas satu hostname, bukan seluruh namespace. Wildcard memerlukan challenge DNS-01. Certbot menetapkan record TXT pada _acme-challenge.example.com. Dalam praktiknya, ini berarti menggunakan plugin certbot-dns-* dengan kredensial API untuk penyedia DNS Anda, atau mengedit record TXT secara manual setiap kali renewal dengan --manual (merepotkan dan tidak layak dijadikan rencana). Panduan lengkap, mulai dari mekanisme record TXT hingga plugin yang melakukan renewal tanpa pengawasan, tersedia dalam sertifikat wildcard dengan Certbot melalui DNS-01. Saran yang realistis: jika Anda memiliki empat subdomain yang sudah diketahui, sertifikat SAN yang mencantumkan keempatnya lebih sederhana daripada wildcard dan tidak memerlukan API key DNS yang tersimpan di server.
Mode kegagalan dan string yang akan Anda lihat
Certbot menolak berjalan karena konfigurasi Apache rusak.
The apache plugin is not working; there may be problems with your existing configuration.
The error was: MisconfigurationError('Error while running apache2ctl configtest.\n\nAction \'configtest\' failed.\nThe Apache error log may have more information.\n\nAH00526: Syntax error on line 12 of /etc/apache2/sites-enabled/example.com.conf')Plugin menjalankan configtest sebelum melakukan tindakan apa pun dan berhenti jika Apache sendiri bermasalah. \ns bersifat literal karena Certbot mencetak representasi repr dari exception. Jalankan sudo apache2ctl configtest sendiri. Perintah ini menunjukkan file dan baris yang bermasalah. Biasanya penyebabnya adalah kesalahan ketik saat mengedit secara manual, SSLCertificateFile yang mengarah ke path yang sudah tidak ada, atau modul yang direferensikan tetapi belum diaktifkan. Perbaiki konfigurasi sampai perintah tersebut mencetak Syntax OK, lalu jalankan Certbot lagi.
Tidak ada vhost yang cocok dengan domain.
Unable to find a virtual host listening on port 80 which is currently the only challenge port.Ini adalah kegagalan missing-ServerName yang dibahas sebelumnya dan terdeteksi saat penerbitan. Certbot mencari ServerName/ServerAlias yang cocok dengan -d pada setiap vhost port 80 yang diaktifkan, tetapi tidak menemukan apa pun. sudo apache2ctl -S menunjukkan rute yang sebenarnya digunakan Apache. Tambahkan baris ServerName ke vhost yang benar, lakukan reload, lalu coba lagi. Kasus yang mirip terjadi saat validasi mencapai vhost yang salah. Respons challenge menjadi Invalid response ... 404 karena situs lain menangani request tersebut. Diagnosis dan tool yang digunakan sama: apache2ctl -S.
Validasi mengalami timeout.
Certbot failed to authenticate some domains (authenticator: apache).
...
Detail: ...: Timeout during connect (likely firewall problem)Let's Encrypt tidak dapat membuka koneksi TCP ke port 80 pada alamat yang diumumkan oleh DNS Anda. Berdasarkan kemungkinan, penyebabnya adalah firewall jaringan dari provider Anda (terpisah dari ufw dan dikonfigurasi melalui panel hosting), ruleset ufw yang hanya mengizinkan 443 atau hanya SSH, atau DNS yang masih mengarah ke server sebelumnya. AAAA yang sudah tidak berlaku biasanya tidak menyebabkan masalah ini. Jika percobaan melalui IPv6 mengalami timeout, Let's Encrypt akan mencoba kembali melalui IPv4. Masalah AAAA biasanya muncul sebagai Connection refused atau Invalid response dari server yang salah. Uji dari luar VPS: curl -I http://example.com dari laptop Anda akan mereproduksi apa yang dilihat validator mereka.
Anda terus mencoba sampai terkena rate limit.
Error creating new order :: too many failed authorizations (5) for "example.com" in the last 1h0m0s, retry after ... UTC: see https://letsencrypt.org/docs/rate-limits/...Let's Encrypt mengizinkan 5 validasi yang gagal untuk setiap hostname, setiap account, setiap jam. Batas ini menggunakan bucket yang terisi kembali dan memperoleh sekitar satu percobaan ulang setiap 12 menit. Percobaan ulang terus-menerus terhadap firewall yang rusak akan menghabiskan batas tersebut dengan cepat. Menunggu memang dapat menyelesaikan masalah sementara, tetapi perbaikan sebenarnya adalah mengubah cara pengujian: setelah kegagalan apa pun, lakukan debugging menggunakan staging environment sampai berhasil.
sudo certbot certonly --apache --dry-run -d example.com -d www.example.comPerhatikan certonly: --dry-run hanya diterima oleh subcommand certonly dan renew. Bentuk certbot --apache --dry-run tanpa argumen sama sekali menolak berjalan dan menampilkan --dry-run currently only works with the 'certonly' or 'renew' subcommands. Dry run melakukan validasi terhadap staging. Staging memiliki batas yang lebih longgar dan tidak menerbitkan sertifikat nyata, sehingga Anda dapat terus gagal di sana sepanjang sore. Jalankan kembali command nyata hanya setelah staging berhasil. Batas lainnya, yaitu 50 sertifikat per registered domain per minggu dan 5 duplikasi name set yang sama per minggu, biasanya hanya tercapai jika sebuah script menerbitkan ulang sertifikat dalam loop.
Setelah HTTPS aktif, ingat bahwa sertifikat mengamankan transport, bukan server. Port 22 tetap menerima percobaan password sepanjang hari. Menggabungkan konfigurasi ini dengan Fail2ban di Ubuntu 24.04 adalah langkah lanjutan yang tepat untuk tiga puluh menit berikutnya.
FAQ
Apakah sebaiknya saya menginstal Certbot dengan snap atau apt untuk Apache di Ubuntu 24.04?
Gunakan apt. Ubuntu 24.04 menyediakan Certbot 2.9.0, yang cukup mutakhir untuk semua hal dalam panduan ini, menerima setiap pembaruan keamanan yang diterbitkan Ubuntu melalui unattended-upgrades, dan tidak memerlukan snapd. Pilih snap hanya jika Anda memerlukan rilis terbaru segera atau plugin DNS yang hanya didistribusikan sebagai snap. Jika Anda beralih, apt remove certbot python3-certbot-apache terlebih dahulu agar dua penjadwal pembaruan tidak berjalan bersamaan.
Mengapa Certbot menampilkan pesan "Unable to find a virtual host listening on port 80"?
Karena tidak ada vhost port 80 yang diaktifkan dan memiliki ServerName atau ServerAlias yang cocok dengan domain yang Anda berikan melalui -d. Pada vhost default Ubuntu, ServerName masih dikomentari. Jalankan sudo apache2ctl -S, temukan atau buat vhost yang seharusnya memiliki nama tersebut, tambahkan ServerName example.com, muat ulang Apache, lalu jalankan kembali Certbot.
Bagaimana cara memperbaiki "Timeout during connect (likely firewall problem)"?
Let's Encrypt tidak dapat menjangkau port 80 pada alamat yang dipublikasikan oleh DNS Anda. Periksa firewall jaringan pada panel penyedia Anda serta ufw. Pastikan dig +short example.com mengarah ke VPS ini, lalu perbaiki atau hapus record AAAA yang sudah tidak berlaku karena validasi mencoba IPv6 terlebih dahulu dan hanya beralih ke IPv4 setelah mengalami timeout. Konfirmasikan perbaikannya dari luar server dengan curl -I http://example.com, lalu lakukan uji coba dengan sudo certbot certonly --apache --dry-run -d example.com sebelum penerbitan yang sebenarnya.
Apakah Certbot memperbarui sertifikat secara otomatis di Ubuntu 24.04?
Ya. Paket apt menginstal certbot.timer, yaitu timer systemd yang berjalan 2 kali sehari dan memperbarui setiap sertifikat yang masa berlakunya akan berakhir dalam 30 hari, lalu memuat ulang Apache. snap menggunakan snap.certbot.renew.timer untuk tugas yang sama. Verifikasikan dengan systemctl list-timers certbot.timer dan lakukan uji coba dengan sudo certbot renew --dry-run. Jangan menambahkan cron job sendiri di atas mekanisme tersebut.
Bagaimana cara mendapatkan sertifikat wildcard dengan Certbot dan Apache?
Sertifikat wildcard memerlukan challenge DNS-01. Certbot harus menempatkan record TXT pada _acme-challenge.example.com. Artinya, Anda memerlukan plugin certbot-dns-* dengan kredensial API untuk penyedia DNS Anda. Alternatif --manual memerlukan pengeditan manual record TXT pada setiap pembaruan. Jika Anda hanya memiliki beberapa subdomain yang sudah diketahui, sertifikat SAN yang mencantumkannya secara eksplisit lebih sederhana dan mencegah kunci API DNS tersimpan di server.