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.pem
Last updated