Определение простыми словами
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.