OpenSSL — что это, ключи, сертификаты и тест TLS | Глоссарий FREEHOSTING

OpenSSL

OpenSSL Toolkit
OpenSSL — OpenSSL — open-source библиотека и CLI-утилита для криптографии и протоколов TLS/SSL. Реализует AES, RSA, ECDSA, SHA, генерирует ключи и сертификаты, шифрует файлы, тестирует HTTPS-соединения. Базовая зависимость для большинства веб-серверов и почтовых демонов.

Определение простыми словами

OpenSSL — это швейцарский нож криптографа. С её помощью генерируют ключи и запросы на сертификаты (CSR), подписывают свои корневые ЦА, конвертируют форматы (PEM, DER, PKCS12), шифруют и расшифровывают файлы, проверяют, какие шифры поддерживает удалённый сервер. Под капотом она же обслуживает HTTPS в Nginx, IMAPS в Dovecot и тысячи других сервисов.

Проект активно развивается: ветка 1.1.1 LTS закрыла поддержку в сентябре 2023, актуальная — 3.x с провайдерной архитектурой и поддержкой постквантовых алгоритмов в 3.5. Есть форки: BoringSSL от Google (без обратной совместимости API), LibreSSL от OpenBSD (упрощённая ветка после Heartbleed). На большинстве Linux-дистрибутивов OpenSSL ставится из коробки и обновляется через apt или dnf.

Сравнение

Задача OpenSSL Альтернатива
Генерация RSA-ключа openssl genrsa -out k 2048 ssh-keygen, gnutls-utils
Создание CSR openssl req -new -key k certbot, acme.sh
Самоподписанный сертификат openssl x509 -req mkcert, easy-rsa
Тест TLS-сервера openssl s_client testssl.sh, sslscan
Шифрование файла openssl enc -aes-256-cbc gpg, age
PKCS12-контейнер openssl pkcs12 -export keytool (Java)
Хеш файла openssl dgst -sha256 sha256sum

Кейсы использования

  • Сисадмин генерирует CSR для коммерческого SSL-сертификата и отправляет его в DigiCert или GlobalSign.
  • Разработчик создаёт самоподписанный сертификат для локального dev-окружения с поддержкой SNI.
  • Корпоративная служба ИБ собирает свой Certificate Authority и подписывает внутренние сервисы.
  • Скрипт деплоя проверяет, что сертификат на проде валиден ещё минимум 14 дней, через openssl x509 -checkend.
  • Негативный сценарий: ключ создан с устаревшим RSA-1024 — браузеры выдают предупреждение, поисковики помечают сайт как небезопасный. Решение — пересоздать с RSA-2048+ или ECDSA P-256 и переподписать.

Технические детали

# Версия и поддерживаемые алгоритмы
openssl version -a
openssl ciphers -v 'TLSv1.3'

# Генерация ключа и CSR одной командой
openssl req -new -newkey rsa:2048 -nodes 
  -keyout example.com.key 
  -out example.com.csr 
  -subj "/C=RU/ST=Moscow/O=Company/CN=example.com"

# Самоподписанный сертификат на 365 дней
openssl req -x509 -newkey rsa:2048 -nodes 
  -keyout selfsigned.key -out selfsigned.crt -days 365

# Проверка удалённого HTTPS-сервера
openssl s_client -connect example.com:443 -servername example.com -showcerts
openssl x509 -in /etc/ssl/example.com.crt -text -noout

# Конвертация PEM в PKCS12 для импорта в Windows/Java
openssl pkcs12 -export -in cert.pem -inkey key.pem 
  -out bundle.pfx -name "example.com"

# Проверка срока годности сертификата
openssl x509 -in cert.pem -noout -dates -subject -issuer
openssl x509 -in cert.pem -checkend 1209600  # 14 дней

# Шифрование файла AES-256
openssl enc -aes-256-cbc -salt -pbkdf2 -in secret.txt -out secret.enc
openssl enc -d -aes-256-cbc -pbkdf2 -in secret.enc -out secret.txt

OpenSSL обслуживает TLS на стороне Nginx, Apache и почтовых серверов. Для автоматического выпуска сертификатов в связке используют ACME-клиенты — certbot и acme.sh.

Частые вопросы

Чем OpenSSL отличается от LibreSSL и BoringSSL?

LibreSSL — форк OpenBSD после Heartbleed, упрощённый и аудированный, совместим по API. BoringSSL — внутренний форк Google для Chrome и Android, без гарантий стабильного API. OpenSSL остаётся стандартом для большинства Linux-дистрибутивов.

Какой размер ключа RSA выбрать в 2026 году?

Минимум 2048 бит, оптимум 3072 или 4096 бит. Альтернатива — ECDSA на кривой P-256 или Ed25519: ключи короче, подпись быстрее, безопасность эквивалентна RSA-3072.

Можно ли использовать OpenSSL для создания собственного CA?

Да, через серию команд openssl req, ca, x509. Для удобства подключают easy-rsa или cfssl, которые упаковывают рутинные шаги в один скрипт. Для корпоративного PKI лучше step-ca или HashiCorp Vault.