Let's Encrypt проверяет владение доменом через challenges — задания, подтверждающие контроль над доменом.
HTTP-01 — файл размещается по пути /.well-known/acme-challenge/ на веб-сервере. Простой способ, но не работает для wildcard и требует открытый порт 80.
# Certbot с HTTP-01 (автоматическая настройка Nginx)
$ certbot --nginx -d example.com -d www.example.com
# acme.sh с HTTP-01 через webroot
$ acme.sh --issue -d example.com -d www.example.com \
--webroot /var/www/example.com/public
# Nginx: настройка location для challenge
server {
listen 80;
server_name example.com;
location /.well-known/acme-challenge/ {
root /var/www/acme-challenge;
try_files $uri =404;
}
location / {
return 301 https://$host$request_uri;
}
}
DNS-01 — TXT-запись добавляется в DNS. Единственный способ получить wildcard-сертификат. Работает даже если сервер недоступен из интернета.
# acme.sh с DNS-01 через Cloudflare API
$ export CF_Token="your_cloudflare_api_token"
$ export CF_Zone_ID="your_zone_id"
$ acme.sh --issue -d example.com -d '*.example.com' \
--dns dns_cf
# certbot с DNS-01 через Cloudflare плагин
$ apt install python3-certbot-dns-cloudflare
$ cat > /etc/letsencrypt/cloudflare.ini << 'EOF'
dns_cloudflare_api_token = your_cloudflare_api_token
EOF
$ chmod 600 /etc/letsencrypt/cloudflare.ini
$ certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d example.com -d '*.example.com'
Для «ВебСтудия» мы использовали комбинацию: HTTP-01 для обычных доменов (быстрее, не зависит от DNS-провайдера) и DNS-01 для wildcard-сертификатов и доменов за Cloudflare.
Оставить комментарий