Panduan ini menjelaskan cara mendapatkan sertifikat TLS tepercaya menggunakan DNS Challenge melalui Certbot. DNS Challenge bekerja dengan cara menambahkan record TXT pada penyedia DNS Anda. Metode ini cukup sederhana karena Anda hanya memerlukan API key dari penyedia DNS (misalnya Cloudflare) agar Certificate Authority (CA) seperti Let's Encrypt dapat menambahkan record TXT secara otomatis.
Berbeda dengan HTTP Challenge yang memerlukan IP publik dan port HTTP (80) terbuka, DNS Challenge tidak memiliki persyaratan tersebut.
sudo apt update sudo apt install certbot python3-certbot-dns-cloudflare -y
Anda memerlukan API Token dari Cloudflare agar Certbot dapat memodifikasi record DNS.
Langkah-langkah:
1. Buka Cloudflare Dashboard → https://dash.cloudflare.com/ 2. Klik My Profile (pojok kanan atas) 3. Masuk ke menu API Tokens → Create Token 4. Pilih template Edit zone DNS 5. Pilih domain Anda pada bagian Zone Resources 6. Klik Create Token lalu salin token yang dihasilkan
Buat file aman untuk menyimpan Cloudflare API token:
sudo mkdir -p /root/.secrets/ sudo nano /root/.secrets/cloudflare.ini
Isi file (ganti your-api-token dengan token Cloudflare Anda):
dns_cloudflare_api_token = your-api-token
Amankan file dengan permission berikut:
sudo chmod 600 /root/.secrets/cloudflare.ini
Domain tunggal:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d yourdomain.com
Wildcard certificate (semua subdomain):
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d "*.yourdomain.com" -d "yourdomain.com"
Certbot akan membuat record DNS TXT secara otomatis untuk verifikasi domain. Jika berhasil, sertifikat akan tersimpan di:
/etc/letsencrypt/live/yourdomain.com/
/etc/letsencrypt/live/yourdomain.com/fullchain.pem/etc/letsencrypt/live/yourdomain.com/privkey.pem/etc/letsencrypt/live/yourdomain.com/chain.pemSertifikat Let's Encrypt berlaku selama 90 hari.
Untuk memperpanjang otomatis:
certbot renew
Disarankan menjalankan perintah ini menggunakan cron job.