OpenSSL
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 enc— пароль и алгоритм, например AES) и асимметричное. Второе годится только для малых объёмов: асимметричным шифром передают ключ, а не файлы. - Ключи: генерация, разбор RSA, RSA, DSA, сертификат, запрос.
- Хеши и подписи: MD5, наборы шифров.
- Применение: SSL на виртуальном сервере Apache.
- Версии: что показывает
openssl version.
Куда смотреть в первую очередь
| Задача | Команда |
|---|---|
| Что внутри сертификата | 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 и на живом сервере с сертификатами не прогонялись.
Комментарии
Пока комментариев нет.