← Назад к вопросам

Кто выдает SSL сертификат?

1.3 Junior🔥 231 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Кто выдает SSL сертификат

SSL (Secure Sockets Layer) сертификаты выдаются специальными организациями, называемыми Certificate Authorities (ЦА) или Удостоверяющие центры. Это не одна организация — существует целая экосистема таких центров разных уровней.

Иерархия SSL сертификатов

1. Root Certificate Authority (корневой ЦА)

Это доверенные организации, которые встроены в браузеры и операционные системы. Их сертификаты поставляются с ОС.

Корневые ЦА (встроены в браузер):
- DigiCert
- GlobalSign
- Amazon Root CA
- Let's Encrypt (бесплатный, но доверенный)
- Comodo
- Sectigo
- VeriSign

2. Intermediate Certificate Authority

Получают сертификат от корневого ЦА и выдают сертификаты для конечных пользователей (веб-сайтов).

3. End Entity Certificate

Это сертификат конкретного сайта, например example.com.

Основные поставщики SSL сертификатов

Бесплатные ЦА:

Let's Encrypt — самый популярный бесплатный ЦА

  • Выдает 90-дневные сертификаты
  • Автоматическое продление через ACME
  • Используется на миллионах сайтов

Платные ЦА:

DigiCert — самая дорогая, используется банками Comodo / Sectigo — средняя цена, хорошее качество GoDaddy — низкая цена для небольших сайтов AWS Certificate Manager — бесплатно для AWS ресурсов

Процесс выдачи SSL сертификата

Шаг 1: Генерация ключей

openssl genrsa -out example.com.key 2048
openssl req -new -key example.com.key -out example.com.csr

Шаг 2: Отправка CSR (Certificate Signing Request) в ЦА

Вы отправляете CSR в выбранный ЦА.

Шаг 3: Проверка прав на домен (DV - Domain Validation)

# Метод 1: HTTP Challenge - создать файл на сайте
# /.well-known/acme-challenge/token

# Метод 2: DNS Challenge - добавить TXT запись
# _acme-challenge.example.com TXT verification_token

# Метод 3: Email Verification - подтверждение по почте
# Отправить письмо на admin@example.com

Шаг 4: Подписание и выдача сертификата

ЦА подписывает ваш CSR своим приватным ключом и выдает сертификат.

Шаг 5: Установка на сервер

from fastapi import FastAPI
import uvicorn

app = FastAPI()

if __name__ == "__main__":
    uvicorn.run(
        app,
        host="0.0.0.0",
        port=443,
        ssl_keyfile="/path/to/example.com.key",
        ssl_certfile="/path/to/example.com.crt"
    )

Типы SSL сертификатов

Domain Validated (DV)

  • Проверяется: владение доменом
  • Время: 1-24 часа
  • Цена: Бесплатно (Let's Encrypt) или от 20 долларов/год

Organization Validated (OV)

  • Проверяется: владение доменом + организация
  • Время: 1-3 дня
  • Цена: от 100 долларов/год

Extended Validation (EV)

  • Проверяется: полная проверка организации
  • Время: 3-7 дней
  • Цена: от 300 долларов/год
  • Признак: зелёная полоса в браузере

Wildcard сертификат

  • Покрывает: домен и все поддомены (*.example.com)
  • Цена: на 20-50 процентов дороже обычного

Multi-domain сертификат

  • Покрывает: несколько разных доменов
  • Цена: зависит от количества доменов

Автоматическое продление (Let's Encrypt + Certbot)

sudo apt install certbot python3-certbot-nginx

# Получить сертификат
sudo certbot --nginx -d example.com

# Настроить автоматическое продление
sudo systemctl enable certbot.timer

# Проверить, что всё работает
sudo certbot renew --dry-run

Проверка SSL сертификата

# Просмотреть информацию о сертификате
openssl x509 -in example.com.crt -text -noout

# Проверить дату истечения
openssl x509 -in example.com.crt -noout -dates

# Проверить сертификат на сервере
openssl s_client -connect example.com:443

Цепочка доверия (Certificate Chain)

Все SSL сертификаты образуют цепочку доверия:

Root CA (встроен в браузер)
  ↓
Intermediate CA
  ↓
End Entity Certificate (ваш сайт)

Браузер проверяет эту цепочку и убеждается, что каждый сертификат подписан предыдущим. Если цепочка разорвана или сертификат истёк — браузер выведет ошибку.

Использование в Python

import requests
import certifi

# Использовать стандартный набор сертификатов ЦА
response = requests.get(
    'https://example.com',
    verify=certifi.where()  # Проверять SSL
)

# Для самоподписанных сертификатов (только для тестирования!)
response = requests.get(
    'https://example.com',
    verify=False  # Опасно - не использовать в production
)

Вывод

SSL сертификаты выдаются Certificate Authorities, которые образуют иерархию:

  • Root ЦА — встроены в браузеры (DigiCert, GlobalSign, Let's Encrypt)
  • Intermediate ЦА — получают сертификаты от корневых и выдают пользователям
  • End Entity Certificate — выдается конкретному домену

Популярные поставщики:

  • Let's Encrypt (бесплатно, автоматизация) — рекомендуется
  • DigiCert (дорого, премиум)
  • Comodo/Sectigo (средняя цена)
  • AWS ACM (бесплатно в AWS)
  • Cloudflare (бесплатно для пользователей Cloudflare)

На 2026 год Let's Encrypt стал стандартом де-факто благодаря автоматизации и бесплатности.