Table of Contents

Cloudflare DNS-01 challenge

Brief notes on how to setup a lets encrypt cert bot using Cloudflare as dns provider.

Configure DNS at domain registrar

Create an API Token

Setup the certbot

Install certbot

    sudo snap install --classic certbot
    sudo snap set certbot trust-plugin-with-root=ok

Install Cloudflare Plugin

    sudo snap install certbot-dns-cloudflare

Create credentials file

    sudo nano /etc/letsencrypt/cloudflare.ini
    dns_cloudflare_api_token = PASTE_TOKEN_HERE

Secure credentials file

    sudo chown root:root /etc/letsencrypt/cloudflare.ini
    sudo chmod 600 /etc/letsencrypt/cloudflare.ini

Activate certbot

Request certificate

    sudo certbot certonly --dns-cloudflare \
      --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
      -d example.com -d int.example.com \
      --agree-tos --email you@example.com --non-interactive

Test renewal

    sudo certbot renew --dry-run

Avoid renewing certificates without the dry run flag as Let's encrypt has a cap of renewals/day.

Reload nginx

    sudo nginx -t && sudo systemctl reload nginx