Как известно 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 1
s) ; /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 1
s) ; /root/sbin/letsencrypt-dns-update)' > /etc/cron.d/letsencrypt-dns-update
tail -n 1000 /etc/letsencrypt/live/${DOMAIN}/*
0 Comments