OpenSSL основные команды
Пример файла openssl.cnf
Сгенерировать приватный ключ
openssl genpkey -algorithm RSA -out $имя_ключа
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out $имя_ключа
openssl genpkey -algorithm ED25519 -out $имя_ключа
openssl genrsa -out $имя_ключа 4096Зашифровать существующий приватный ключ
openssl rsa -aes256 -in private.key -out private.encИзвлечь публичный ключ из приватного
openssl rsa -pubout -in $имя_приватного_ключа -out $имя_публичного_ключаСамоподписной сертфикат с ключом одним запросом
openssl req -x509 -newkey rsa:4096 -keyout private.key -out certificate.crt -days 365 -nodesСоздание запроса на сертификат (CertificateSignRequest) из существующего приватного ключа
openssl req -new -key private.key -out request.csrГенерация CSR с расширенными атрибутами (-addext)
openssl req -new -key private.key -out request.csr \
-addext "subjectAltName = DNS:example.com, DNS:www.example.com" \
-addext "keyUsage = critical, digitalSignature, keyEncipherment" \
-addext "extendedKeyUsage = serverAuth, clientAuth"Все значения keyUsage
digitalSignature
Подпись данных (например, TLS-сертификаты, подпись кода)
nonRepudiation (или contentCommitment)
Гарантирует, что владелец не сможет отказаться от подписанных данных
keyEncipherment
Шифрование ключей (например, для TLS)
dataEncipherment
Шифрование данных (редко используется)
keyAgreement
Используется в алгоритмах обмена ключами (например, Diffie-Hellman, ECDH)
keyCertSign
Подпись сертификатов (нужно для корневых и промежуточных CA)
cRLSign
Подпись списков отзыва сертификатов (CRL)
encipherOnly
Только шифрование (используется с keyAgreement)
decipherOnly
Только расшифровка (используется с keyAgreement)
Примеры использования keyUsage:
keyUsage:Для TLS-сертификата сервера:
-addext "keyUsage = digitalSignature, keyEncipherment"Для сертификата подписи кода:
-addext "keyUsage = digitalSignature, nonRepudiation"Для корневого сертификата (CA):
-addext "keyUsage = keyCertSign, cRLSign"Для сертификата аутентификации клиента:
-addext "keyUsage = digitalSignature, keyAgreement"
Просмотр содержимого CSR
openssl req -text -noout -in request.csrПросмотр содержимого сертификата
openssl x509 -text -noout -in certificate.crtПросмотр содержимого приватного ключа
openssl rsa -text -noout -in private.keyПросмотр публичного ключа
openssl rsa -pubout -in private.key -out public.keyПроверка на соответствие
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in private.key | openssl md5
# вывод хэшей в обоих командах должен совпадатьКонвертировать PEM в DER
openssl x509 -in cert.pem -outform DER -out cert.derКонвертировать DER в PEM
openssl x509 -in cert.der -inform DER -out cert.pemКонвертировать PEM в PKCS#12 (PFX/P12)
openssl pkcs12 -export -out keystore.pfx -inkey private.key -in cert.crtКонвертировать PKCS#12 в PEM
openssl pkcs12 -in keystore.pfx -nodes -out cert.pemКонвертировать P7B в PEM
openssl pkcs7 -in certificate_file.p7b -print_certs -out cert.pemLast updated