OpenSSL

#SSL #Безопасность

OpenSSL — библиотека шифрования и утилита командной строки к ней. Ею создают ключи, выпускают и проверяют сертификаты, шифруют файлы и смотрят, что за сертификат отдаёт чужой сервер.

Сертификат — это не «ключ», а документ: открытый ключ плюс сведения о владельце, подписанные удостоверяющим центром. Цепочка обычно такая:

корневой сертификат УЦ  →  промежуточный сертификат  →  сертификат вашего сайта

Браузер и клиент проверяют её целиком. Если промежуточный не отдан сервером, цепочка рвётся, и появляется ошибка — при этом «сертификат у нас есть» никого не успокаивает.

Четыре задачи, ради которых OpenSSL берут в руки

1. Создать ключ. В третьей ветке OpenSSL для новых ключей принято genpkey; genrsa оставлен для совместимости со старыми скриптами (man openssl-genrsa сам ссылается на genpkey).

$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key
$ openssl genpkey -algorithm ED25519 -out ed25519.key       # короче и быстрее

2. Сделать запрос на сертификат (CSR) — файл, который отдают удостоверяющему центру:

$ openssl req -new -key server.key -out server.csr -subj '/CN=server.example.com'

3. Подписать — либо у центра, либо своим удостоверяющим центром (см. «Свой CA»):

$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
    -days 365 -out server.crt

4. Проверить. Это шаг, который чаще всего пропускают:

$ openssl x509 -in server.crt -noout -text | head -20        # что внутри
$ openssl verify -CAfile ca.crt server.crt                   # сходится ли цепочка
$ openssl s_client -connect server.example.com:443 -servername server.example.com

Последняя команда показывает, что сервер отдаёт на самом деле — со всей цепочкой и сроками. Половина вопросов «почему браузер ругается» решается именно ею.

Форматы и преобразования

Формат Как выглядит Где используется
PEM текст: -----BEGIN CERTIFICATE----- Обычный вид на серверах Linux
DER двоичный Некоторые библиотеки и Windows
PKCS#12 (.pfx) двоичный, вместе с ключом Импорт в Windows, браузеры

Преобразование: «Преобразования ключей и сертификатов», PEM, DER.

Что было в разделе

Куда смотреть в первую очередь

Задача Команда
Что внутри сертификата openssl x509 -in file.crt -noout -text
Проверить цепочку openssl verify -CAfile ca.crt file.crt
Что отдаёт сервер openssl s_client -connect host:443 -servername host
Срок действия openssl x509 -in file.crt -noout -dates
Отпечаток openssl x509 -in file.crt -noout -fingerprint -sha256

Источники

  • man 1 openssl, man 1 openssl-genpkey, man 1 openssl-req, man 1 openssl-x509, man 1 openssl-verify, man 1 openssl-s_client, man 1 openssl-enc.
  • man 1 openssl-genrsa — там прямо указано, что вместо него используется genpkey.
  • Версия на рабочей системе: OpenSSL 3.5.5 (проверено 19.10.2026).

Что ещё не проверено

  • Примеры из старых страниц подраздела (rsa, rsautl) в третьей ветке помечены как устаревшие: на смену пришли pkey и pkeyutl. Страницы ещё не переписаны — сверяйтесь с man на своей версии.
  • Команды этой страницы приведены по man-страницам OpenSSL 3.5.5 и на живом сервере с сертификатами не прогонялись.
Оценка статьи 0

Комментарии

Пока комментариев нет.