openssl
27 commands
27 shown
Сгенерировать RSA ключ
Сгенерировать 4096-битный RSA закрытый ключ
openssl genrsa -out private.key 4096
Сгенерировать Ed25519 ключ
Современный Ed25519 ключ (меньше и быстрее RSA)
openssl genpkey -algorithm ed25519 -out private.key && openssl pkey -in private.key -pubout -out public.key
Создать CSR
Запрос на подпись сертификата для передачи в CA
openssl req -new -key private.key -out request.csr -subj '/CN=example.com/O=MyOrg/C=RU'
Самоподписанный сертификат
Создать самоподписанный сертификат и ключ одной командой
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj '/CN=localhost'
Детали сертификата
Subject, Issuer, даты действия, SAN
openssl x509 -in cert.pem -noout -text | grep -E 'Subject:|Issuer:|Not (Before|After)|DNS:'
Срок действия сертификата
Вывести дату начала и окончания действия
openssl x509 -in cert.pem -noout -dates
Проверить сертификат по CA
Проверить цепочку сертификатов по CA-bundle
openssl verify -CAfile ca.pem cert.pem
Совпадение сертификата и ключа
Убедиться что сертификат и ключ соответствуют друг другу
diff <(openssl x509 -pubkey -noout -in cert.pem) <(openssl pkey -pubout -in key.pem) && echo 'MATCH'
Конвертировать PEM в PKCS#12
Упаковать сертификат + ключ + CA в .p12 файл
openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ca.pem -out bundle.p12 -name myalias
Извлечь сертификат из PKCS#12
Разделить .p12 на отдельные PEM файлы сертификата и ключа
openssl pkcs12 -in bundle.p12 -nokeys -out cert.pem && openssl pkcs12 -in bundle.p12 -nocerts -nodes -out key.pem
Проверить TLS сертификат сервера
Срок и издатель TLS-сертификата живого сервера
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject -issuer
Проверить цепочку сертификатов
Показать полную цепочку: leaf → intermediate → root
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | openssl crl2pkcs7 -nocrl | openssl pkcs7 -print_certs -noout -text | grep -E 'Subject:|Issuer:'
Зашифровать файл AES-256
Зашифровать файл паролем AES-256-CBC + PBKDF2
openssl enc -aes-256-cbc -pbkdf2 -in secret.txt -out secret.enc
Расшифровать AES-256 файл
Расшифровать файл зашифрованный командой выше
openssl enc -d -aes-256-cbc -pbkdf2 -in secret.enc -out secret.txt
Случайный hex-токен
Сгенерировать 64-символьный hex токен (например для API ключей)
openssl rand -hex 32
Полный разбор сертификата
Вывести все поля сертификата: subject, issuer, срок, расширения, SAN, key usage
openssl x509 -in cert.pem -noout -text
Проверка истечения (для CI)
Код 0, если сертификат жив дольше 24ч; удобно для мониторинга и алертов в CI
openssl x509 -in cert.pem -noout -checkend 86400 && echo OK || echo EXPIRING
Разбор цепочки с живого сервера
Получить всю цепочку с SNI; -servername обязателен для vhost/SNI-бэкендов
openssl s_client -connect <host>:443 -servername <host> -showcerts </dev/null 2>/dev/null
Извлечь список SAN
Показать только записи SAN; современные браузеры игнорируют CN, важен SAN
openssl x509 -in cert.pem -noout -ext subjectAltName
Проверить сертификат по цепочке CA
Проверить цепочку доверия; note: в -CAfile нужны промежуточные и корневой по порядку
openssl verify -CAfile ca-chain.pem cert.pem
Сверить сертификат и приватный ключ
Совпадение хэшей modulus доказывает соответствие ключа сертификату; пустой diff = совпало
diff <(openssl x509 -in cert.pem -noout -modulus | md5sum) <(openssl rsa -in key.pem -noout -modulus | md5sum)
CSR и ключ одной командой
Сгенерировать ключ и CSR с SAN; -addext избавляет от правки openssl.cnf
openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out req.csr -subj "/CN=<host>" -addext "subjectAltName=DNS:<host>"
Самоподписанный сертификат с SAN
Самоподписанный сертификат на год одной строкой; без SAN TLS-клиенты его отвергнут
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 -subj "/CN=<host>" -addext "subjectAltName=DNS:<host>"
PEM в связку PKCS12
Упаковать сертификат, ключ и цепочку в .p12 для Java-keystore и импорта в Windows
openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ca-chain.pem -out bundle.p12 -name <name>
Проверка STARTTLS
Проверить TLS на сервисах со STARTTLS; postgres меняйте на smtp/imap/mysql/ldap
openssl s_client -connect <host>:5432 -starttls postgres -showcerts </dev/null 2>/dev/null
Сгенерировать ключ Ed25519
Modern: ключи Ed25519 компактны и быстры в отличие от RSA; для подписи и mTLS
openssl genpkey -algorithm ed25519 -out ed25519.pem
Проверить конкретный протокол TLS
Принудить версию для проверки поддержки; -tls1_3 / -no_tls1_2 для проверки политики
openssl s_client -connect <host>:443 -tls1_2 </dev/null 2>&1 | grep -E 'Protocol|Cipher'
no commands match