Приватный ключ — один из двух ключей в асимметричной криптографии (RSA, ECDSA, Ed25519). Пара состоит из приватного ключа (хранится в тайне) и публичного ключа (распространяется свободно, в том числе через SSL-сертификат). Математически связаны: зашифровать публичным — расшифровать можно только приватным, и наоборот.
Как работает в TLS
При TLS-рукопожатии сервер доказывает владение приватным ключом: подписывает случайное число или участвует в ECDH-обмене. Клиент (браузер) проверяет подпись с помощью публичного ключа из сертификата. Если проверка прошла — канал зашифрован, и только сервер с приватным ключом может его расшифровать.
Современные рекомендации: RSA 2048 бит — минимум (RSA 4096 для высокого риска), ECDSA P-256 или P-384 — предпочтительно (меньше размер, выше скорость), Ed25519 — для SSH-ключей.
Хранение и защита
Приватный ключ хранится в виде PEM-файла (.key, .pem) и никогда не передаётся за пределы сервера. Типичная защита:
- Права доступа к файлу:
chmod 600 private.key— только владелец. - Шифрование ключа паролем (passphrase) — защищает от кражи файла.
- HSM (Hardware Security Module) — аппаратное хранилище для ключей высокой ценности.
История
Асимметричная криптография с парой ключей изобретена в 1976 году Диффи и Хеллманом (алгоритм обмена ключами), а RSA — в 1977 году Ривестом, Шамиром и Адлеманом. PEM-формат (Privacy Enhanced Mail) появился в 1993 году. ECDSA стандартизирован в ANSI X9.62 в 1999 году. Ed25519, разработанный Бернштейном, стал доступен в OpenSSL 1.1.1 в 2018 году.
Связь с хостингом
При получении SSL-сертификата сервер генерирует пару ключей и отправляет CSR (Certificate Signing Request) с публичным ключом в CA. Приватный ключ остаётся на сервере. Конфигурация Nginx: ssl_certificate_key /etc/ssl/private/domain.key;. Если ключ скомпрометирован — сертификат отзывается через OCSP/CRL и выпускается заново.
Как работает приватный ключ SSL
Приватный ключ SSL/TLS генерируется вместе с CSR (Certificate Signing Request). Алгоритмы: RSA (2048 или 4096 бит), ECDSA (secp256r1, secp384r1). ECDSA-256 обеспечивает ту же безопасность, что RSA-3072, при меньшем размере ключа -- TLS-хендшейк быстрее на 20--30%. Приватный ключ хранится только у вас -- CA никогда его не получает. При компрометации приватного ключа нужно немедленно отозвать сертификат через OCSP и перевыпустить с новым ключом. Форматы: PEM (.key, .pem), DER (.der), PKCS#8. На сервере Nginx приватный ключ указывается директивой ssl_certificate_key.
Безопасность приватного ключа
Приватный ключ должен быть доступен только процессу веб-сервера (права 600, владелец root или www-data). Никогда не передавайте приватный ключ третьим лицам, не помещайте в git-репозиторий, не включайте в Docker-образ. Рекомендуется шифровать приватный ключ паролем (passphrase) -- тогда даже при краже файла ключ без пароля бесполезен. HSM (Hardware Security Module) хранит приватные ключи в защищённом оборудовании без возможности экспорта. CSR создаётся из приватного ключа и передаётся в CA для подписи. Публичный ключ встроен в сертификат и доступен всем.
История
Асимметричная криптография (публичный/приватный ключ) разработана Диффи и Хеллманом в 1976 году (алгоритм Diffie-Hellman). RSA предложен Ривестом, Шамиром и Адлеманом в 1977 году. ECDSA (Elliptic Curve Digital Signature Algorithm) стандартизирован в FIPS 186-2 (2000). TLS 1.3 (RFC 8446, 2018) требует ECDSA или EdDSA -- RSA-ключи работают, но ECDSA предпочтительнее по производительности.