ZeroSSL

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 #

  1. Daftar di app.zerossl.com
  2. Masuk ke dashboard
  3. Navigasi ke DeveloperACME Credentials
  4. 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 →

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact