Как известно cloudflare не предоставляет wildcard проксирования а соответственно и wildcard сертификатов на бесплатном тарифе.
Рассмотрим получение SSL сертификата для домена и всех поддоменов через DNS валидацию на примере cloudflare как одного из самых популярных DNS сервисов

1) Установка certbot последней версии
Сначала устанавливаем git и python 3

yum install epel-release -y
yum install git python3 python3-pip -y

Клонируем и устанавливаем актуальную верссию certbot

cd /usr/src/

git clone https://github.com/certbot/certbot

cd certbot/

python3 setup.py install

2) Устанавливаем плагин dns cloudflare

pip3 install certbot-dns-cloudflare

Проверяем что плагин установлен корректно

/usr/local/bin/certbot plugins

Мы должны получить вывод вида

dns-cloudflare
…
standalone
…
webroot
… 

3) Получаем api key для нашего CloudFlare аккаунта в панели и записываем в файл
My profile — Api tokens — Global API Key — View (click)

Записываем реквизиты в email и api key в файл

echo dns_cloudflare_email = mymailoncf@example.com > /root/cloudflaredns
echo dns_cloudflare_api_key = af91550sdf3f246869148d89c377a611e279a >> /root/cloudflaredns
chmod 600 /root/cloudflaredns

4) Получаем сертификат для домена

DOMAIN=your-wild-card-domain.com
CFMAIL=mymailoncf@example.com
/usr/local/bin/certbot certonly -n -m ${CFMAIL} --agree-tos --expand --dns-cloudflare --dns-cloudflare-credentials /root/cloudflaredns --dns-cloudflare-propagation-seconds 30 -d ${DOMAIN} -d "*.${DOMAIN}"

5) Установим перевыпуск вашего SSL сертификата каждый месяц

mkdir /root/sbin/

cat > /root/sbin/letsencrypt-dns-update << EOL
!/bin/bash
/usr/local/bin/certbot certonly -n -m ${CFMAIL} --agree-tos --expand --dns-cloudflare --dns-cloudflare-credentials /root/cloudflaredns --dns-cloudflare-propagation-seconds 30 -d "${DOMAIN}" -d "*.${DOMAIN}"
EOL

chmod 755 /root/sbin/letsencrypt-dns-update

echo '01 01 01 *  * root (sleep $(shuf -i 1-10400 -n 1s) ; /root/sbin/letsencrypt-dns-update)' > /etc/cron.d/letsencrypt-dns-update

Ваш SSL сертификат Вы можете найти по пути:

/etc/letsencrypt/live/your-wild-card-domain.com/

Готовый скрипт для получения сертификата:

DOMAIN=your-wild-card-domain.com

CFMAIL=mymailoncf@example.com

CFAPIKEY=af91550sdf3f246869148d89c377a611e279a

yum install epel-release -y

yum install git python3 python3-pip -y

cd /usr/src/

git clone https://github.com/certbot/certbot

cd certbot/

python3 setup.py install

pip3 install certbot-dns-cloudflare

echo dns_cloudflare_email = ${CFMAIL} > /root/cloudflaredns

echo dns_cloudflare_api_key = ${CFAPIKEY} >> /root/cloudflaredns

chmod 600 /root/cloudflaredns

/usr/local/bin/certbot certonly -n -m ${CFMAIL} --agree-tos --expand --dns-cloudflare --dns-cloudflare-credentials /root/cloudflaredns --dns-cloudflare-propagation-seconds 30 -d "${DOMAIN}" -d "*.${DOMAIN}"

cat > /root/sbin/letsencrypt-dns-update << EOL
!/bin/bash
/usr/local/bin/certbot certonly -n -m ${CFMAIL} --agree-tos --expand --dns-cloudflare --dns-cloudflare-credentials /root/cloudflaredns --dns-cloudflare-propagation-seconds 30 -d "${DOMAIN}" -d "*.${DOMAIN}"
EOL

chmod 755 /root/sbin/letsencrypt-dns-update

echo '01 01 01 *  * root (sleep $(shuf -i 1-10400 -n 1s) ; /root/sbin/letsencrypt-dns-update)' > /etc/cron.d/letsencrypt-dns-update
tail -n 1000 /etc/letsencrypt/live/${DOMAIN}/*

Categories: CentosScripts

0 Comments

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *