В контексте SSL/TLS инфраструктуры KEY (или .key-файл) — файл с приватным (закрытым) ключом асимметричной криптографии. Генерируется на сервере вместе с Certificate Signing Request (CSR), отправляемым в центр сертификации. Приватный ключ — единственный секрет в TLS-соединении: он никогда не покидает сервер и не передаётся в CA. Компрометация приватного ключа означает компрометацию всего HTTPS-трафика.
Как работает
Генерация ключевой пары RSA 2048 бит через OpenSSL:
openssl genrsa -out private.key 2048
Генерация CSR на основе ключа:
openssl req -new -key private.key -out request.csr
CA подписывает CSR своим промежуточным ключом и возвращает сертификат (.crt). Итоговые файлы: private.key (секретный, только на сервере), certificate.crt (публичный, отправляется клиентам). В TLS-хендшейке сервер доказывает владение приватным ключом через криптографическую операцию, проверяемую с помощью публичного ключа из сертификата.
Алгоритмы ключей:
- RSA — классический, ключи 2048 или 4096 бит. 2048 бит считается достаточным до 2030+ года по оценке NIST.
- ECDSA (Elliptic Curve) — P-256 (~3072-битный RSA-эквивалент) при ключе всего 256 бит. Быстрее RSA при генерации подписи, требует меньше ресурсов. Рекомендован Let's Encrypt с 2021 года.
- Ed25519 — EdDSA на кривой Curve25519, ещё компактнее и быстрее. Поддерживается TLS 1.3.
Хранение и защита приватного ключа
Приватный ключ может быть зашифрован парольной фразой (openssl genrsa -aes256 -out encrypted.key 2048). При зашифрованном ключе nginx/Apache требуют ввода пароля при старте — неудобно для автоматического перезапуска. Для сервисов типичная практика — незашифрованный ключ с ограниченными правами файловой системы (chmod 600 private.key, владелец — пользователь веб-сервера).
История
RSA разработан в 1977 году Ривестом, Шамиром и Адлеманом. Алгоритм стал основой SSL/TLS с 1994 года. ECDSA стандартизован NIST в 2000 году. Ed25519 разработан Дэниелом Бернштейном и Таней Ланге в 2011 году. RFC 8032 (2017) стандартизовал EdDSA. Let's Encrypt перешёл на выпуск ECDSA-сертификатов как опцию по умолчанию в 2021 году.
На что обращать внимание
При смене хостинга необходимо перенести как сертификат, так и приватный ключ. Без ключа сертификат бесполезен — CA не хранит приватные ключи и не выдаёт их повторно. При обновлении сертификата через ACME (Let's Encrypt) acme.sh и Certbot автоматически генерируют новый ключ каждый раз — это хорошая практика (key rollover). Приватный ключ не должен попасть в git-репозиторий: добавьте *.key в .gitignore. При обнаружении утечки — немедленно отзовите сертификат и перевыпустите.
Типы ключей и алгоритмы
RSA (Rivest–Shamir–Adleman) — классический алгоритм асимметричного шифрования. RSA 2048 бит стандартен для TLS-сертификатов, RSA 4096 — повышенная безопасность (медленнее). ECDSA (Elliptic Curve DSA) P-256 обеспечивает сопоставимую безопасность с RSA 3072 при ключе всего 256 бит — быстрее и экономичнее. Let's Encrypt с 2022 года выпускает ECDSA P-256 по умолчанию. Ed25519 — современный алгоритм для SSH-ключей, не применяется для TLS-сертификатов (браузеры не поддерживают).
Хранение приватного ключа
Приватный ключ SSL-сертификата хранится в файле .key или .pem. Права доступа: 600 (только владелец). HSM (Hardware Security Module) используется для хранения ключей в изоляции от ОС — стандарт для банков и платёжных систем. Для автоматизации управления ключами используйте HashiCorp Vault или ACME-совместимые инструменты.