sumarsono.com
Take it with a grain of salt


Let's Encrypt Wildcard SSL Cert Menggunakan Certbot Dan Cloudflare

Posted on

Wildcard SSL Cert merupakan SSL Cert yang bisa dipakai untuk semua sub domain dari domain tertentu. Misalnya aku punya sumarsono.com, ketika aku punya wildcard SSL Cert *.sumarsono.com, maka semua sub domain dibawah sumarsono.com dapat memakai certificate ssl tersebut. Tujuan dari wildcard SSL Cert ini, salah satunya untuk mengejar praktis, dan menghemat kuota SSL cert. Untuk sub domain dalam sekala kecil, tentu tidak begitu terasa manfaatnya, tapi untuk sub domain skala besar benar-benar terasa manfaatnya.

Cloudflare (dalam konteks kasus artikel ini) merupakan penyedia free dns hosting. Aku memakai cloudflare untuk panel domain-domain yang aku pakai. Beli domain dimanapun aku selalu pakai NS cloudflare. Untuk memudahkan manajemen, dikumpulkan di satu tempat.

Let's encrypt dalah Otoritas Sertifikasi (CA) yang gratis, terotomatisasi dan terbuka, ada untuk keuntungan publik. Mereka adalah layanan yang disediakan oleh Internet Security Research Group (ISRG). Mereka memberikan sertifikat yang diperlukan untuk menaktifkan HTTPS (SSL/TLS) pada web , secara gratis, semudah mungkin.

Cerbot merupakan tool untuk mendapatkan SSL Cert dari Let's Encrypt.

Untuk mendapatkan wildcard SSL Let's encrypt menggunakan Cerbot dan Cloudflare caranya sangat mudah. Satu-satunya challenge untuk mendapatkan wildcard SSL let's encrypt adalah lewat DNS, kita tidak bisa pakai http challenge maupun tls challenge.

Proses mendapatkan wildcard SSL Let's encrypt menggunakan Cerbot dan Cloudflare bisa manually, add/update TXT record yang diminta oleh Let's Encrypt secara manual. Bisa juga otomatis menggunakan DNS plugin. Aku lebih memilih yang otomatis, biar tidak repot add/update DNS record secara manual.

Pertama, aku harus genetate Token cloudflare khusus untuk edit Zone DNS. Login ke CF > My Profile > API Tokens > Create Token > Edit Zone DNS (Use template)

Create token CF

  1. Permission-nya adalah Edit.
  2. Zone silahkan pilih nama domain.
  3. IP filter, diisi ip public server, goalnya untuk membatasi token hanya bisa dipakai oleh server terpilih.

Kalau sudah diisi, lanjut Continue to summary dan create token, kemudian copy simpan token tsb baik-baik. Lanjut SSH ke server dan eksekusi perintah untuk install cerbot dan plugin dns-nya

sudo apt install certbot python3-certbot-dns-cloudflare

Aku masukin token cloudflare ke server

sudo mkdir /root/.secrets && \
sudo touch /root/.secrets/cloudflare.ini && \
sudo chmod 0600 /root/.secrets/cloudflare.ini && \
sudo nano /root/.secrets/cloudflare.ini

Paste token tadi ke dalam file tsb dengan format:

dns_cloudflare_api_token=paste-token-cf-di-sini

Kemudian aku dapatkan wildcard ssl cert dari let's encrypt dengan coomand:

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /home/root/.secrets/cloudflare.ini -d "sumarsono.com" -d "*.sumarsono.com"

Setelah sukses, aku bisa verifikasi:

sudo certbot certificates

Hasilnya:

certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Found the following certs:
  Certificate Name: sumarsono.com
    Domains: sumarsono.com *.sumarsono.com
    Expiry Date: 2021-03-16 07:52:56+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/sumarsono.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/sumarsono.com/privkey.pem

Dengan begini wildcard SSL cert let's encrypt sudah aku dapatkan dan bisa dipakai. Contoh hasilnya adalah ini, aku gak generate ssl cert untuk subdomain email, tapi subdomain email tersebut ssl certnya valid karena memakai wildcard ssl cert

wildcard ssl in action

Cool~