Урок 09

Домены и SSL

Покупка домена

Регистраторы:

  • Namecheap — дёшево, хорошая поддержка
  • Cloudflare — по себестоимости
  • GoDaddy — дорого, но популярно
  • Reg.ru — для России

DNS-записи

  • A — домен → IP-адрес
  • AAAA — домен → IPv6
  • CNAME — домен → другой домен
  • MX — почта
  • TXT — верификация, SPF, DKIM

Для Vercel

A     @     76.76.21.21
CNAME www   cname.vercel-dns.com

Или через NS-серверы Vercel (проще).

Для своего сервера

A     @     <IP сервера>
A     www   <IP сервера>

Поддомены

A     api   <IP>
A     app   <IP>
A     admin <IP>

SSL

На Vercel

Автоматически, бесплатно, продлевается сам.

Let's Encrypt на сервере

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot:

  • Получит сертификат
  • Настроит Nginx
  • Установит автообновление

Проверка автообновления:

sudo certbot renew --dry-run

Сертификат обновляется за 30 дней до истечения.

Nginx с SSL

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

Редирект с HTTP на HTTPS.

HSTS

Заголовок для принудительного HTTPS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Осторожно: preload необратим на месяцы.

Wildcard-сертификат

Для *.example.com:

sudo certbot --nginx -d example.com -d "*.example.com" --manual --preferred-challenges dns

Требует DNS-проверку.

Cloudflare

Проксирует трафик:

  • DDoS-защита
  • CDN
  • Кеш
  • SSL

Настройки:

  • SSL/TLS → Full (strict)
  • Always Use HTTPS
  • Automatic HTTPS Rewrites

Проверка

  • SSL Labs: ssllabs.com/ssltest
  • Security Headers: securityheaders.com
  • Mozilla Observatory: observatory.mozilla.org

Почта

Если нужна почта на домене:

MX    @     10 mail.example.com
TXT   @     "v=spf1 include:_spf.google.com ~all"
dkim._domainkey  ...

Для отправки через сервисы (Resend, SendGrid) — свои записи.

Итоги

  • A и CNAME записи
  • Let's Encrypt бесплатно
  • Автообновление через certbot
  • HSTS для принудительного HTTPS
  • Cloudflare для CDN и защиты
  • Проверяй через SSL Labs