Все статьи о SSL SSL и сертификаты

Шпаргалка по командам OpenSSL для SSL-сертификатов

OpenSSL — это швейцарский нож для работы с SSL/TLS-сертификатами. Каждая другая статья на этом сайте ссылается на команды OpenSSL — эта страница собирает их все в одном месте.

Проверка сертификата

Просмотр деталей сертификата (удалённый сервер)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -text

Проверка даты истечения

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -enddate

Проверка субъекта и SAN

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName

Проверка издателя (какой CA)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer

Проверка локального файла сертификата

openssl x509 -in cert.pem -noout -text
openssl x509 -in cert.pem -noout -dates          # Только даты
openssl x509 -in cert.pem -noout -subject         # Только субъект
openssl x509 -in cert.pem -noout -ext subjectAltName  # Только SAN

Проверка цепочки сертификатов

Проверка полноты цепочки (удалённый сервер)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null
# Ищите:
#   Verify return code: 0 (ok)          ← Цепочка полная
#   Verify return code: 21 (unable to verify) ← Цепочка неполная

Верификация сертификата по файлу цепочки

openssl verify -CAfile chain.pem cert.pem
# Ожидаемый результат: cert.pem: OK

Проверка соответствия сертификата и ключа

# Эти два хеша должны быть идентичны
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
# Для ключей ECDSA:
openssl ec -in privkey.pem -pubout 2>/dev/null | openssl md5
openssl x509 -in cert.pem -pubkey -noout | openssl md5

Генерация ключей

ECDSA P-256 (рекомендуется)

openssl ecparam -genkey -name prime256v1 -noout -out privkey.pem

RSA 2048

openssl genrsa -out privkey.pem 2048

RSA 4096

openssl genrsa -out privkey.pem 4096

Создание CSR

ECDSA

openssl req -new -key privkey.pem -out csr.pem -subj "/CN=example.com"

С SAN (мультидоменный)

openssl req -new -key privkey.pem -out csr.pem \
  -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

Просмотр CSR

openssl req -in csr.pem -noout -text

Что такое CSR? →

Конвертация между форматами

PEM → PFX (для Windows/IIS)

openssl pkcs12 -export -out cert.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem

PFX → PEM

openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem
openssl pkcs12 -in cert.pfx -cacerts -nokeys -out chain.pem

PEM → DER

openssl x509 -in cert.pem -outform DER -out cert.der

DER → PEM

openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem

Форматы сертификатов подробно →

Отладка TLS-соединений

Проверка согласованной версии TLS

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | grep "Protocol"

Проверка конкретной версии TLS

# Проверка TLS 1.2
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_2 2>/dev/null | grep "Protocol"

# Проверка TLS 1.3
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_3 2>/dev/null | grep "Protocol"

Полное рукопожатие

openssl s_client -connect example.com:443 -servername example.com -msg

Проверка поддерживаемых наборов шифров

# Список всех шифров, принимаемых сервером
nmap --script ssl-enum-ciphers -p 443 example.com

Создание самоподписанного сертификата (только для разработки)

openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=localhost" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

Для доверенного HTTPS на localhost используйте mkcert.

Создание fullchain.pem из отдельных файлов

cat cert.pem chain.pem > fullchain.pem

Порядок важен: сначала ваш сертификат, затем промежуточный(е).

Часто задаваемые вопросы

Как установить OpenSSL?

Большинство дистрибутивов Linux включают его. На macOS: brew install openssl. На Windows: установите через Git for Windows (включает OpenSSL) или Chocolatey (choco install openssl).

В чём разница между openssl x509 и openssl s_client?

x509 читает локальный файл сертификата. s_client подключается к удалённому серверу и получает его сертификат. Используйте s_client для проверки работающего сервера; используйте x509 для просмотра файла на диске.

Почему мои команды показывают «unable to load certificate»?

Файл, вероятно, в формате DER (бинарный), а не PEM (текстовый). Добавьте -inform DER к команде:

openssl x509 -in cert.der -inform DER -noout -text

Похожие статьи

Развёртывание 2026-05-07
Как проверить срок действия SSL-сертификата
Проверьте, когда истекает ваш SSL-сертификат, с помощью браузера, OpenSSL или онлайн-инструментов. Настройте мониторинг, чтобы избежать неожиданного истечения срока и простоя.
SSL и сертификаты 2026-05-07
Форматы SSL-сертификатов: PEM, PFX, DER -- подробное объяснение
Разберитесь в форматах сертификатов PEM, PFX/PKCS#12 и DER. Узнайте, какой формат нужен вашему серверу и как конвертировать между ними с помощью OpenSSL.
SSL и сертификаты 2026-05-07
Цепочка доверия сертификатов: подробное объяснение
Как браузеры проверяют SSL-сертификаты через цепочку от корневого CA к промежуточному CA и до вашего сертификата. Узнайте, почему важен порядок цепочки и как исправить ошибку 'сертификат не является доверенным'.
SSL и сертификаты 2026-05-07
Сертификаты ECC и RSA: какой выбрать?
Сравнение сертификатов ECC (ECDSA P-256) и RSA (2048/4096 бит). Ключи ECC меньше и быстрее. Узнайте, почему GetHTTPS по умолчанию использует ECC и когда RSA всё ещё имеет смысл.
Получите бесплатный SSL-сертификат в браузере
Без установки, без аккаунта. Ваш приватный ключ никогда не покидает устройство.
Получить сертификат