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