Cara Generate Wildcard SSL Let's Encrypt dengan Certbot DNS Challenge (Panduan Lengkap)

Pendahuluan
Wildcard SSL certificate memungkinkan untuk mengamankan semua subdomain hanya dengan satu sertifikat, misalnya “*sub.example.com” “subdomain.example.com”. Dengan bantuan Let’s Encrypt, kita bisa mendapatkan SSL/TLS Certificate gratis dan otomatis menggunakan Certbot melalui metode DNS challenge. Namun perlu diingat certificate tidak valid untuk nama domain yang menggunakan sub-subdomain seperti sub.sub.example.com.
Metode ini cocok banget kalau kamu punya setup seperti:
- Infrastruktur HTTP yang open public
- Server internal atau private network
- Reverse proxy atau load balancer
- Environment production dengan banyak subdomain
SSL/TLS certificate sendiri berfungsi untuk mengenkripsi data yang dikirim antara client dan server agar tidak bisa disadap (Man in the middle attack), menjaga integritas data supaya tidak diubah selama transmisi, meningkatkan kepercayaan pengguna karena layanan terlihat lebih aman, serta mendukung penggunaan protokol modern seperti HTTP/2 dan berbagai layanan API yang membutuhkan koneksi aman.
Baca Juga: Convert PFX, CRT, and PEM Azure SSL/TLS Certificates
Prasyarat
Pastikan:
- Server Linux dengan akses root atau sudo
- Certbot sudah terinstall
- Akses ke DNS provider
- Koneksi internet aktif
Install Certbot (APT)

sudo apt update
sudo apt install certbot -y
Alternatif Install Certbot via pip (Official Method)
Mengikuti panduan resmi Certbot untuk environment tertentu seperti NGINX atau sistem yang tidak menggunakan package manager default.
Install dependency:
sudo apt install python3 python3-venv libaugeas0 -y
Buat virtual environment:
python3 -m venv ~/certbot
Aktifkan environment:
source ~/certbot/bin/activate
Install Certbot:
pip install certbot certbot-nginx
Buat symlink agar mudah dijalankan:
sudo ln -s ~/certbot/bin/certbot /usr/bin/certbot
Generate Wildcard Certificate Let’s Encrypt
certbot certonly --manual --preferred-challenges=dns -d *.example.com -d example.com
Proses DNS Challenge Verification
Certbot akan meminta membuat TXT record:
_acme-challenge.example.com TXT xxxxxxxxxxxxxxxxxxxxx
Langkah:
- Login ke DNS provider
- Tambahkan TXT record untuk record @
- Tunggu propagasi DNS
- Tekan Enter untuk melanjutkan
- Umumnya Certbot akan melakukan DNS Challenge yang ke 2 dan pastikan record sebelumnya tidak dihapus
Lokasi File Certificate

/etc/letsencrypt/live/example.com/
File penting:
- fullchain.pem : Berisi gabungan sertifikat domain (cert.pem) dan sertifikat intermediate (chain.pem) dalam satu file. Ini adalah file yang paling sering digunakan untuk konfigurasi server (seperti Nginx atau Apache) karena sudah mencakup seluruh rantai sertifikat yang dibutuhkan agar browser bisa memverifikasi koneksi dengan benar.
- privkey.pem : Merupakan private key (kunci privat) yang digunakan untuk proses enkripsi dan dekripsi pada koneksi TLS. File ini sangat sensitif dan harus dijaga kerahasiaannya karena siapa pun yang memiliki file ini bisa menyamar sebagai server Anda.
- cert.pem : Berisi sertifikat utama untuk domain atau wildcard domain Anda yang diterbitkan oleh Certificate Authority. File ini hanya berisi sertifikat server tanpa sertifikat intermediate, sehingga biasanya tidak digunakan sendiri dalam konfigurasi production.
- chain.pem : Berisi sertifikat intermediate dari Certificate Authority yang menghubungkan sertifikat domain Anda ke root certificate yang dipercaya oleh browser. File ini diperlukan agar client dapat memvalidasi keaslian sertifikat secara lengkap.
Cek Certificate

openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -text -noout
Renewal Certificate
certbot certificates
Karena metode manual, renewal perlu menjalankan ulang DNS challenge sebelum expiry (90 hari). Atau bisa membuat cronjob untuk melakukan pengecekan/update secara otomatis
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | tee -a /etc/crontab > /dev/null
Tapi jika menggunakan DNS validation kita harus menginstall certbot extension dengan DNS Provider kita seperti Cloudflare (python3-certbot-dns-cloudflare) atau Azure (pip3 install certbot certbot-dns-azure)
Best Practice Production
- Gunakan DNS API untuk auto renewal
- Batasi permission private key
- Monitor expiry SSL
- Backup folder /etc/letsencrypt
- Dokumentasikan proses renewal
Troubleshooting
DNS Verification Gagal
Jika DNS Verification gagal, kita bisa melakukan validasi menggunakan dig atau nslookup
dig TXT _acme-challenge.example.com
Atau juga bisa menggunakan whatsmydns.net
Pastikan TXT record sudah benar dan propagasi selesai sebelum melanjutkan ke DNS verification yang kedua, serta pastikan DNS Infrastructure dalam kondisi prima.
Baca juga: Yes, It was DNS!
FAQ
Q1: Apa itu Let’s Encrypt wildcard certificate?
A1: Sertifikat SSL gratis dari Let’s Encrypt yang bisa mengamankan semua subdomain dalam satu sertifikat (*.example.com).
Q2: Apa itu Certbot DNS challenge?
A2: Metode verifikasi domain menggunakan TXT record di DNS, wajib untuk wildcard certificate.
Q3: Bagaimana cara auto-renew wildcard certificate?
A3: Gunakan plugin DNS API (misal Cloudflare, Azure, AWS, Route53) agar Certbot dapat memperbarui sertifikat otomatis.
Q4: Apakah bisa menggunakan HTTP challenge untuk wildcard?
A4: Tidak, Let’s Encrypt hanya mengizinkan DNS challenge untuk wildcard certificate.
Q5: Dimana file SSL tersimpan di Linux?
A5: /etc/letsencrypt/live/example.com/ berisi privkey.pem, cert.pem, fullchain.pem, dan chain.pem.
Kesimpulan
Let’s Encrypt wildcard certificate dengan Certbot DNS challenge adalah solusi gratis dan fleksibel untuk mengamankan banyak subdomain. Dengan memahami proses generate, verifikasi, dan renewal, Anda dapat menjaga keamanan data yang dikirim dari server ke client tanpa risiko tinggi.
