15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
01.11.2024
2 +1

SSL Public and Private Encryption Keys: A Complete Guide for 2025

Безопасное, зашифрованное общение — основа каждого надежного веб-сайта. Независимо от того, управляете ли вы интернет-магазином, блогом WordPress или пользовательским API, шифрование SSL/TLS защищает данные ваших пользователей от перехвата и манипуляции. В основе этой защиты лежит мощная криптографическая концепция: пары открытых и закрытых ключей.

Это руководство объясняет, как именно работают открытые и закрытые ключи SSL, почему они важны и как эффективно их внедрять и управлять ими — независимо от того, размещаете ли вы сайт на VPS, выделенном сервере или общем хостинге.

Что такое открытые и закрытые ключи SSL?

SSL (Secure Sockets Layer) и его современный преемник TLS (Transport Layer Security) полагаются на асимметричное шифрование — криптографическую систему, которая использует два математически связанных ключа: открытый ключ и закрытый ключ. Вместе они образуют пару ключей, которая обеспечивает безопасное, аутентифицированное общение между клиентом (например, веб-браузером) и сервером.

Открытый ключ

Открытый ключ, как следует из названия, является общедоступным. Он встроен непосредственно в ваш сертификат SSL/TLS, который установлен на вашем веб-сервере и предоставляется каждому посетителю, подключающемуся к вашему сайту. Любой может использовать открытый ключ для шифрования данных, но эти зашифрованные данные могут быть разблокированы только соответствующим закрытым ключом.

Думайте об этом как о замке: вы можете раздать тысячи открытых замков (открытые ключи) всем, кто хочет отправить вам защищенное сообщение, но только вы держите ключ (закрытый ключ), который их открывает.

Закрытый ключ

Закрытый ключ — это наиболее чувствительный компонент вашей установки SSL. Он генерируется на вашем сервере и никогда не должен его покидать. Этот ключ используется для расшифровки данных, которые были зашифрованы соответствующим открытым ключом. Вся модель безопасности SSL зависит от абсолютной конфиденциальности закрытого ключа.

Если злоумышленник когда-либо получит доступ к вашему закрытому ключу, он сможет:

  • Расшифровать весь перехваченный зашифрованный трафик
  • Выдать себя за ваш сервер перед ничего не подозревающими пользователями
  • Провести атаки типа «человек посередине» (MITM) незаметно

Вот почему безопасные серверные среды — такие как те, которые предлагаются через Выделенные серверы с полным доступом root и изоляцией на уровне оборудования — критически важны для развертывания в производстве.

Как открытые и закрытые ключи работают в соединении SSL/TLS

Процесс установления безопасного HTTPS-соединения называется рукопожатием SSL/TLS. Вот подробное пошаговое описание того, как открытые и закрытые ключи используются на протяжении этого процесса.

Шаг 1: Client Hello

Когда браузер пользователя пытается подключиться к вашему веб-сайту HTTPS, он инициирует рукопожатие, отправляя серверу сообщение Client Hello. Это сообщение включает:

  • Версии протокола SSL/TLS, которые поддерживает клиент
  • Список поддерживаемых наборов шифров (алгоритмы шифрования)
  • Случайно сгенерированное число, используемое позже при выводе ключа
  • Поддерживаемые методы сжатия

На этом этапе шифрование еще не произошло. Клиент просто объявляет о своих возможностях.

Шаг 2: Server Hello и представление сертификата

Сервер отвечает сообщением Server Hello, которое включает:

  • Выбранную версию SSL/TLS и набор шифров
  • Еще одно случайно сгенерированное число
  • Сертификат SSL сервера, который содержит открытый ключ сервера и подписан доверенным центром сертификации (CA)

Затем клиент проверяет сертификат, проверяя:

  1. Что он был выдан доверенным CA (например, Let’s Encrypt, DigiCert или Sectigo)
  2. Что он не истек
  3. Что имя домена совпадает с Common Name (CN) или Subject Alternative Name (SAN) сертификата
  4. Что сертификат не был отозван (через CRL или OCSP)

Если какая-либо из этих проверок не пройдена, браузер отображает предупреждение о безопасности и соединение обычно прерывается.

Шаг 3: Обмен ключами — где открытые/закрытые ключи выполняют тяжелую работу

После проверки сертификата клиент и сервер должны согласовать общий ключ сеанса — симметричный ключ шифрования, используемый для шифрования всех фактических данных во время сеанса. Здесь пара открытого/закрытого ключа играет свою наиболее критическую роль.

При традиционном обмене ключами RSA:

  1. Клиент генерирует случайный предварительный секрет
  2. Клиент шифрует предварительный секрет, используя открытый ключ сервера (извлеченный из сертификата SSL)
  3. Зашифрованный предварительный секрет отправляется на сервер
  4. Сервер использует свой закрытый ключ для расшифровки предварительного секрета
  5. Как клиент, так и сервер независимо выводят один и тот же ключ сеанса из предварительного секрета и ранее обменянных случайных чисел

В современном TLS 1.3 с ECDHE (Elliptic Curve Diffie-Hellman Ephemeral):

Процесс обмена ключами еще более безопасен. Вместо прямого шифрования предварительного секрета обе стороны вносят вклад в генерацию ключа сеанса, используя эфемерные пары ключей. Это обеспечивает Perfect Forward Secrecy (PFS), что означает, что даже если закрытый ключ будет скомпрометирован в будущем, прошлые сеансы не смогут быть расшифрованы.

Шаг 4: Установление симметричного шифрования для передачи данных

После того как обе стороны разделяют один и тот же ключ сеанса, рукопожатие SSL завершено. Все последующее общение — каждый HTTP-запрос, ответ, cookie и отправка формы — шифруется с использованием симметричного шифрования (обычно AES-256), которое намного быстрее асимметричного шифрования для передачи больших объемов данных.

На этом этапе пара открытого/закрытого ключа больше не участвует напрямую. Его задача была безопасно установить ключ сеанса; симметричное шифрование берет на себя управление отсюда.

Почему асимметричное шифрование используется только для рукопожатия

Частый вопрос: *если шифрование открытым/закрытым ключом так безопасно, почему не использовать его для всех данных?*

Ответ — производительность. Асимметричное шифрование вычислительно дорогостоящее — на порядки медленнее, чем симметричное шифрование. Использование RSA или ECC для шифрования гигабайтов потокового видео или запросов к базе данных было бы непрактичным.

Элегантное решение, которое использует SSL/TLS, — это гибридный подход:

ЭтапТип шифрованияНазначение
РукопожатиеАсимметричное (RSA/ECC)Безопасный обмен ключом сеанса
Передача данныхСимметричное (AES)Быстрое шифрование больших объемов данных
АутентификацияЦифровые подписиПроверка идентичности сервера

Эта гибридная модель дает вам безопасность асимметричного шифрования со скоростью симметричного шифрования.

Лучшие практики управления ключами SSL

Создание сертификата SSL — это только начало. Надлежащее управление ключами — это то, что обеспечивает безопасность вашей инфраструктуры с течением времени. Вот основные лучшие практики, которые должен следовать каждый системный администратор.

1. Используйте достаточно сильные длины ключей

Слабые ключи можно взломать с помощью атак перебора или математических атак. Следуйте этим минимальным стандартам:

  • Ключи RSA: используйте 2048-бит как абсолютный минимум; 4096-бит рекомендуется для высокозащищенных сред
  • Ключи ECC: используйте 256-бит (P-256) или выше — ECC обеспечивает эквивалентную безопасность RSA с гораздо меньшими размерами ключей, улучшая производительность рукопожатия
  • Избегайте устаревших алгоритмов: не используйте MD5, SHA-1 или SSL 3.0/TLS 1.0/1.1 — они устарели и уязвимы

2. Защитите свой закрытый ключ любой ценой

Файл вашего закрытого ключа (обычно server.key или privkey.pem) должен рассматриваться как наиболее чувствительный файл на вашем сервере:

  • Установите строгие разрешения файлов: chmod 600 /etc/ssl/private/server.key
  • Убедитесь, что файл принадлежит только root или пользователю веб-сервера
  • Никогда не передавайте закрытый ключ по электронной почте, чату или незашифрованным каналам
  • Никогда не сохраняйте его в общедоступном каталоге или репозитории контроля версий (например, GitHub)
  • Рассмотрите возможность использования аппаратного модуля безопасности (HSM) для корпоративных сред

3. Регулярно обновляйте сертификаты SSL

Сертификаты SSL имеют сроки действия. Истекший сертификат вызывает предупреждения браузера, которые разрушают доверие пользователей и могут повредить вашему рейтингу в поисковых системах. Лучшие практики включают:

  • Используйте Let’s Encrypt с Certbot для бесплатных, автоматически обновляемых 90-дневных сертификатов
  • Установите задания обновления cron: certbot renew --quiet запускаемые дважды в день
  • Отслеживайте истечение сертификата с помощью инструментов, таких как SSL Labs, Zabbix или Nagios
  • Для коммерческих сертификатов приобретайте их у надежного поставщика — AlexHost предлагает Сертификаты SSL для доменов всех типов

4. Реализуйте перенаправление HTTPS

Наличие установленного сертификата SSL недостаточно — вы должны убедиться, что весь трафик его использует. Добавьте следующее в конфигурацию Apache или Nginx:

Apache:

<VirtualHost *:80>
    ServerName yourdomain.com
    Redirect permanent / https://yourdomain.com/
</VirtualHost>

Nginx:

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

5. Включите HTTP Strict Transport Security (HSTS)

HSTS указывает браузерам всегда использовать HTTPS для вашего домена, даже если пользователь вводит http:// вручную:

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

После того как вы уверены в своей установке SSL, отправьте свой домен в список предварительной загрузки HSTS для максимальной защиты.

6. Ротируйте ключи после любого инцидента безопасности

Если вы подозреваете, что ваш закрытый ключ был скомпрометирован — или если сервер выводится из эксплуатации — немедленно:

  1. Сгенерируйте новую пару ключей
  2. Отправьте новый запрос подписи сертификата (CSR) вашему CA
  3. Установите новый сертификат
  4. Отозовите старый сертификат через панель управления вашего CA

Как сгенерировать пару ключей SSL и CSR на Linux

Если вы управляете собственным сервером, вот как сгенерировать закрытый ключ и запрос подписи сертификата (CSR) с помощью OpenSSL:

Сгенерируйте 2048-битный закрытый ключ RSA

openssl genrsa -out server.key 2048

Сгенерируйте CSR из закрытого ключа

openssl req -new -key server.key -out server.csr

Вам будет предложено ввести сведения об организации, включая:

  • Страна (C)
  • Штат/провинция (ST)
  • Населенный пункт (L)
  • Организация (O)
  • Common Name (CN) — это должно точно совпадать с вашим доменным именем

Проверьте содержимое CSR

openssl req -text -noout -verify -in server.csr

Отправьте CSR вашему центру сертификации для получения подписанного сертификата SSL.

Установите сертификат на Nginx

ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

SSL на AlexHost: развертывание упрощено

Независимо от того, развертываете ли вы сайт WordPress, API Node.js или высоконагруженную платформу электронной коммерции, наличие правильной инфраструктуры хостинга значительно упрощает управление SSL.

Хостинг VPS

С хостингом VPS от AlexHost вы получаете полный доступ root к вашему серверу, что позволяет вам устанавливать и настраивать сертификаты SSL точно так, как вам нужно — будь то Let’s Encrypt через Certbot, коммерческие сертификаты или подстановочные сертификаты для поддоменов. Хранилище NVMe SSD обеспечивает быструю обработку рукопожатия SSL даже при высоких нагрузках трафика.

Управляемые панели управления

Если вы предпочитаете подход на основе графического интерфейса к управлению SSL, VPS с cPanel предоставляет упрощенный интерфейс для установки сертификатов SSL, управления файлами ключей и включения AutoSSL — все без использования командной строки.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать