# API cloudflare

{% embed url="https://www.bjornjohansen.com/wildcard-certificate-letsencrypt-cloudflare" %}

## Certbot

{% tabs %}
{% tab title="Bash" %}
```bash
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx python3-certbot-dns-cloudflare
```
{% endtab %}
{% endtabs %}

## CloudFlare

Чтобы получить ключ API, войдите в свою панель управления CloudFlare, перейдите в свой профиль и в нижней части нажмите «Вид» рядом с «Глобальным ключом API».

![](https://320276595-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LLF-7W0bZRRIkK1fkxn%2F-M7Hw3avESNqxz0R2Dap%2F-M7IUKqnJSx88RxjdkD6%2Fcloudflare-view-api-key.webp?alt=media\&token=356e5ed0-04c5-4e48-bd9f-adb3d2240e33)

Создаем сикрет файл

{% tabs %}
{% tab title="Bash" %}
```bash
mkdir -p /root/.secrets/
vi /root/.secrets/cloudflare.ini
```
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="cloudflare.ini" %}
```
dns_cloudflare_email = "info@email.com"
dns_cloudflare_api_key = "998bef61234567ab6a3e5tgbc665da2908ff1"
```
{% endtab %}
{% endtabs %}

Выставляем права

{% tabs %}
{% tab title="Bash" %}
```bash
chmod 0700 /root/.secrets/
chmod 0400 /root/.secrets/cloudflare.ini
```
{% endtab %}
{% endtabs %}

Получаем сертификаты

{% tabs %}
{% tab title="Bash" %}
```bash
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01
```
{% endtab %}
{% endtabs %}

Сертификаты будут лежать  **`/etc/letsencrypt/live/example.com/`**

## NGINX

В **nginx** в раздел **server** можем добавить

{% tabs %}
{% tab title="example.com.conf" %}
```
  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
```
{% endtab %}
{% endtabs %}

## Автопродление сертификата

{% tabs %}
{% tab title="Для теста" %}
```
certbot renew --dry-run
```
{% endtab %}

{% tab title="Cron" %}
```
14 5 * * * /usr/bin/certbot renew --quiet --post-hook "/usr/sbin/service nginx reload" > /dev/null 2>&1
```
{% endtab %}
{% endtabs %}
