openssl

27 commands

27 shown

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