ZeroSSL #
ZeroSSL adalah Certificate Authority komersial yang juga menawarkan sertifikat TLS gratis via protokol ACME. Diluncurkan sebagai layanan berbayar sejak lama dan kemudian menambahkan tier gratis via ACME, ZeroSSL menjadi alternatif serius untuk Let’s Encrypt — terutama setelah Caddy v2.4 menjadikannya sebagai fallback CA otomatis ketika Let’s Encrypt tidak tersedia.
Memahami ZeroSSL dan kapan menggunakannya memberi kamu opsi redundansi yang penting untuk deployment kritis.
ZeroSSL vs Let’s Encrypt #
Sebelum memutuskan menggunakan ZeroSSL, penting memahami perbedaan keduanya:
Perbandingan Let's Encrypt vs ZeroSSL (tier gratis):
Aspek Let's Encrypt ZeroSSL
────────────────────────────────────────────────────────────────
Status Nonprofit (ISRG) Komersial (apilayer)
Berdiri sejak 2015 2017
Sertifikat gratis Tidak terbatas 3 per akun (via dashboard)
Tidak terbatas (via ACME)
Rate limit ACME 50/domain/minggu Tidak dipublikasikan
Validitas 90 hari 90 hari
Dukungan wildcard YA (DNS-01) YA (DNS-01)
ACME support YA (native) YA (native)
EAB required TIDAK YA (untuk ACME)
Trust level Semua browser modern Semua browser modern
Dashboard Tidak ada Ada (gratis)
API management Admin API Caddy Admin API Caddy + Dashboard
Dukungan komersial Tidak ada Ada (tier berbayar)
Kapan Memilih ZeroSSL #
ZeroSSL menjadi pilihan yang lebih baik dalam beberapa situasi:
Redundansi CA — Jika Let’s Encrypt mengalami downtime atau ada masalah teknis, memiliki fallback ke ZeroSSL memastikan deployment kamu tidak terhenti. Caddy v2.4+ melakukan ini secara otomatis.
Domain yang di-rate limit oleh Let’s Encrypt — Jika kamu sudah menguras rate limit Let’s Encrypt untuk domain tertentu dan perlu sertifikat baru segera, ZeroSSL bisa menjadi solusi sementara.
Dashboard monitoring — ZeroSSL menyediakan dashboard web untuk melihat semua sertifikat yang diterbitkan, berguna untuk audit dan monitoring di lingkungan enterprise.
Kebutuhan komersial — ZeroSSL menawarkan tier berbayar dengan SLA, dukungan teknis, dan fitur tambahan yang tidak ada di Let’s Encrypt.
Cara Caddy Menggunakan ZeroSSL sebagai Fallback Otomatis #
Sejak Caddy v2.4, ZeroSSL sudah dikonfigurasi sebagai CA sekunder secara otomatis. Ketika Let’s Encrypt gagal (karena downtime, rate limit, atau masalah lain), Caddy secara otomatis mencoba ZeroSSL:
Caddy perlu sertifikat baru
│
▼
Coba Let's Encrypt (CA primer)
│
┌────┴────┐
│ │
Berhasil Gagal (downtime/rate limit/error)
│ │
▼ ▼
Sertifikat Coba ZeroSSL (CA fallback)
aktif │
┌────┴────┐
│ │
Berhasil Gagal
│ │
▼ ▼
Sertifikat Log error,
aktif retry nanti
Untuk ini Caddy menggunakan akun ZeroSSL yang sudah dikonfigurasi sebelumnya oleh tim Caddy — artinya fallback ke ZeroSSL bekerja tanpa konfigurasi tambahan apapun dari kamu.
Menggunakan ZeroSSL sebagai CA Utama #
Untuk mengkonfigurasi ZeroSSL sebagai CA primer (bukan hanya fallback), kamu perlu membuat akun ZeroSSL dan mendapatkan EAB credentials:
Langkah 1: Buat Akun ZeroSSL #
- Daftar di app.zerossl.com
- Masuk ke dashboard
- Navigasi ke Developer → ACME Credentials
- Generate EAB credentials (Key ID dan HMAC Key)
Langkah 2: Konfigurasi Caddy #
{
email [email protected]
cert_issuer acme {
# ACME endpoint ZeroSSL
ca https://acme.zerossl.com/v2/DV90
# External Account Binding — wajib untuk ZeroSSL
eab {
key_id "your-key-id-from-zerossl-dashboard"
mac_key "your-hmac-key-from-zerossl-dashboard"
}
email [email protected]
}
}
example.com {
file_server
}
Cara Lebih Aman: Gunakan Variabel Environment #
{
email {env.ADMIN_EMAIL}
cert_issuer acme {
ca https://acme.zerossl.com/v2/DV90
eab {
key_id {env.ZEROSSL_KEY_ID}
mac_key {env.ZEROSSL_MAC_KEY}
}
email {env.ADMIN_EMAIL}
}
}
# Set environment variables sebelum menjalankan Caddy
export ADMIN_EMAIL=[email protected]
export ZEROSSL_KEY_ID=your_key_id_here
export ZEROSSL_MAC_KEY=your_mac_key_here
# Atau di /etc/environment atau .env file
Konfigurasi Multi-CA (Redundansi Penuh) #
Konfigurasi ini memberikan redundansi maksimum — Caddy mencoba CA dalam urutan yang ditentukan:
{
email [email protected]
# CA pertama: Let's Encrypt
cert_issuer acme {
ca https://acme-v02.api.letsencrypt.org/directory
email [email protected]
}
# CA kedua: ZeroSSL (fallback)
cert_issuer acme {
ca https://acme.zerossl.com/v2/DV90
eab {
key_id {env.ZEROSSL_KEY_ID}
mac_key {env.ZEROSSL_MAC_KEY}
}
email [email protected]
}
}
Sejak Caddy v2.4, fallback ke ZeroSSL sudah otomatis terjadi bahkan tanpa konfigurasi cert_issuer eksplisit. Konfigurasi multi-CA manual seperti di atas berguna jika kamu ingin menggunakan akun ZeroSSL sendiri (untuk mendapat dashboard monitoring) atau mengontrol urutan CA secara eksplisit.Mengkonfigurasi ZeroSSL Per-Site #
Jika kamu ingin menggunakan CA yang berbeda untuk site yang berbeda:
{
email [email protected]
# Global: Gunakan Let's Encrypt sebagai default
}
# Site ini menggunakan Let's Encrypt (default)
example.com {
file_server
}
# Site ini khusus menggunakan ZeroSSL
critical.example.com {
tls {
issuer acme {
ca https://acme.zerossl.com/v2/DV90
eab {
key_id {env.ZEROSSL_KEY_ID}
mac_key {env.ZEROSSL_MAC_KEY}
}
}
}
reverse_proxy localhost:8080
}
Verifikasi Sertifikat ZeroSSL #
Setelah konfigurasi, verifikasi bahwa Caddy berhasil mendapatkan sertifikat dari ZeroSSL:
# Cek issuer sertifikat
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -issuer
# Sertifikat Let's Encrypt:
# issuer=C=US, O=Let's Encrypt, CN=R10
# Sertifikat ZeroSSL:
# issuer=C=AT, O=ZeroSSL, CN=ZeroSSL RSA Domain Secure Site CA
# Lihat log Caddy untuk konfirmasi
sudo journalctl -u caddy | grep -i "zerossl\|certificate obtained"
Dashboard ZeroSSL untuk Monitoring #
Salah satu keunggulan menggunakan akun ZeroSSL sendiri adalah akses ke dashboard monitoring:
Dashboard ZeroSSL menyediakan:
✓ List semua sertifikat yang diterbitkan untuk akun kamu
✓ Status setiap sertifikat (aktif, expired, akan expire)
✓ Tanggal issue dan expiry
✓ Domain yang dicakup
✓ Download sertifikat manual jika diperlukan
✓ Revoke sertifikat
✓ Notifikasi email sebelum expire
Untuk enterprise yang perlu audit trail atau compliance, ini bisa sangat berguna.
Troubleshooting ZeroSSL #
EAB Credentials Tidak Valid #
# Gejala di log:
# "External Account Binding failed"
# "Invalid EAB credentials"
# Solusi: Generate ulang EAB credentials di dashboard ZeroSSL
# Credentials lama mungkin sudah expired atau salah disalin
ZeroSSL Tidak Bisa Memverifikasi Domain #
# ZeroSSL menggunakan challenge ACME yang sama dengan Let's Encrypt
# Troubleshooting-nya identik:
# 1. Cek DNS
dig +short example.com
# 2. Cek port 80 accessible
curl -I http://example.com/.well-known/acme-challenge/test
# 3. Lihat log detail
sudo journalctl -u caddy | grep -i "zerossl\|acme\|challenge" | tail -50
Sertifikat Masih dari Let’s Encrypt Meski ZeroSSL Dikonfigurasi #
# Ini normal jika sertifikat Let's Encrypt yang valid masih ada di storage
# Caddy menggunakan sertifikat yang sudah ada sampai perlu renewal
# Untuk force use ZeroSSL sekarang:
# 1. Hapus sertifikat lama dari storage
sudo find /var/lib/caddy -name "*.pem" -path "*example.com*" -delete
# 2. Restart Caddy — ia akan request sertifikat baru dari ZeroSSL
sudo systemctl restart caddy
# 3. Verifikasi issuer
echo | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -issuer
Ringkasan #
- ZeroSSL adalah CA alternatif yang menggunakan protokol ACME, menawarkan sertifikat gratis tidak terbatas via ACME (meski di-rate limit seperti Let’s Encrypt).
- Fallback otomatis — Caddy v2.4+ secara otomatis mencoba ZeroSSL jika Let’s Encrypt gagal, tanpa konfigurasi tambahan.
- ZeroSSL membutuhkan EAB (External Account Binding) untuk digunakan dengan akun sendiri — daftar di app.zerossl.com dan generate credentials.
- Gunakan variabel environment untuk menyimpan EAB credentials agar tidak hardcoded di Caddyfile.
- Keunggulan utama ZeroSSL: dashboard monitoring untuk audit sertifikat dan dukungan komersial yang tersedia untuk tier berbayar.
- Konfigurasi multi-CA memungkinkan fallback yang lebih terkontrol — CA pertama dicoba dulu, baru CA kedua jika gagal.
← Sebelumnya: Let’s Encrypt Berikutnya: Self-Signed & Internal CA →