Generate SSL Lets’Encrypt Menggunakan certbot-dns-cloudflare

Dengan menggunakan certbot-dns-cloudflare kita bisa melakukan generate SSL dengan validasi domain.
Cara ini digunakan jika kita tidak mempunyai web server yang direct access ke internet publik dalam kata lain web server di jaringan lokal.

Install python3-certbot-dns-cloudflare

apt-get instal python3-certbot-dns-cloudflare

Dapatkan API Key untuk mengelola domain yang nantinya digunakan untuk verifikasi melalui domain.

Terdapat 2 Cara untuk melakukan verfikasi SSL menggunakan domain dari cloudflare.
1. Menggunakan restricted API Token (Recomended)
2. Menggunakan Global API Key (Not Recomended)

Berikut Cara Untuk mendapatkan restricted API Token.

Login kedalam akun cloudflare, lalu pergi ke bagian My Profile, di menu sebelah kiri pilih API Tokens, lalu klik Create Token.

Pilih Edit zone DNS

Beri nama rule Token, lalu pilih spesifik domain yang akan digunakan

Jika sudah klik Continue to Summary

Maka akan muncul halaman summary, jika sudah sesuai klik Create Token

Salin dan simpan token didalam file txt atau sejenisnya.

Buat direktori /root/.secrets/certbot/

mkdir -p /root/.secrets/certbot/

Buat file

sudo nano /root/.secrets/certbot/cloudflare.ini

Lalu masukkan dengan format sebagai berikut.

# Cloudflare API token used by Certbot
dns_cloudflare_api_token = pastekantokendisini

Sehingga seperti berikut.

# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567

Buat agar secret file lebih aman dengan cara ubah permission

sudo chmod 0700 /root/.secrets/certbot
sudo chmod 0400 /root/.secrets/certbot/cloudflare.ini

Generate request SSL

Untuk mendapatkan SSL untuk domain warscloud.com perintahnya sebagai berikut.

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  -d warscloud.com

Untuk mendapatkan SSL untuk domain warscloud.com dan www.warscloud.com perintahnya sebagai berikut.

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  -d warscloud.com \
  -d www.warscloud.com

Untuk mendapatkan SSL untuk domain warscloud.com dan menunggu propagasi selama 60 detik perintahnya sebagai berikut. (Recomended menambahkan waktu propagasi)

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 60 \
  -d warscloud.com

Jika request/generate SSL berhasil maka akan muncul seperti berikut.

Setelah berhasil certbot secara otomatis menambahkan task schedule untuk auto renew ssl.

Sumber/referensi:

https://certbot-dns-cloudflare.readthedocs.io/en/stable/

https://labzilla.io/blog/cloudflare-certbot