🔐 Полная шпаргалка по OpenSSL, которую нужно сохранить |

🔐 Полная шпаргалка по OpenSSL, которую нужно сохранить

Мануал

В этом уроке мы рассмотрим различные примеры использования команды openssl, так что вкратце давайте приступим к работе с нашей шпаргалкой по openssl.

Содержание
  1. Генерация ключей
  2. Ключи RSA
  3. Ключи EC Elliptic Curve (эллиптическая кривая)
  4. Ключи DSA
  5. Ключи EdDSA (например, Ed25519)
  6. Ключ с зашифрованной защитой паролем
  7. Преобразование ключей между форматами
  8. Генерация закрытого и открытого ключей
  9. Генерация сертификата УЦ (CA)
  10. Создание сертификатов
  11. Генерирование закрытых ключей
  12. Сгенерируйте запрос на подписание сертификата (CSR)
  13. Генерация самоподписанных сертификатов
  14. Подписание CSR в вашем СA
  15. Проверка сертификата
  16. Шифрование и расшифровка файлов
  17. Шифрование файлов
  18. Расшифровка файлов
  19. Шифрование файлов с помощью ключа и IV (вектора инициализации)
  20. Шифрование и расшифровка с помощью открытых и закрытых ключей
  21. Проверка и верификация сертификатов
  22. Генерация сертификата с помощью поля SAN
  23. Создание и управление CRLs
  24. Преобразование форматов сертификатов
  25. Работа с SSL-соединениями
  26. Управление паролями и хэшами
  27. Однострочные команды OpenSSL

Генерация ключей

Ключи RSA

Сгенерируем стандартный ключ RSA (2048 бит)

openssl genrsa -out rsa_private.key 2048

Сгенерируем более сильный ключ RSA (4096 бит).

🔐 Как конвертировать сертификат PFX в файл PEM с помощью OpenSSL?

openssl genrsa -out rsa_private.key 4096

Генерация ключа RSA с пользовательской экспонентой

openssl genrsa -out rsa_private.key 2048 -F4

Ключи EC Elliptic Curve (эллиптическая кривая)

Сгенерируем ключ EC, используя:

openssl ecparam -name prime256v1 -genkey -out ec_private.key

Список всех доступных кривых ЕС

openssl ecparam -list_curves

Генерация EC-ключа с явными параметрами

openssl ecparam -name secp384r1 -param_enc explicit -genkey -out ec_private_explicit.key

Ключи DSA

Сгенерируйте пару ключей DSA

openssl dsaparam -genkey 2048 -out dsa_private.key

Ключи EdDSA (например, Ed25519)

Сгенерируем закрытый ключ Ed25519

openssl genpkey -algorithm Ed25519 -out ed25519_private.key

Ключ с зашифрованной защитой паролем

Сгенерируем ключ RSA, зашифрованный с помощью AES-256

openssl genrsa -aes256 -out rsa_private_encrypted.key 2048

Генерируйте ключ EC с защитой паролем

openssl ecparam -name prime256v1 -genkey -out ec_private_encrypted.key -aes256

Преобразование ключей между форматами

Преобразование закрытого ключа из формата PEM в формат DER

🔐 Как конвертировать сертификат PFX в файл PEM с помощью OpenSSL?

openssl rsa -in rsa_private.key -outform DER -out rsa_private.der

Преобразование закрытого ключа в формат PKCS#8

openssl pkcs8 -topk8 -inform PEM -outform PEM -in rsa_private.key -out rsa_private_pkcs8.pem -nocrypt

Генерация закрытого и открытого ключей

Генерация пары ключей RSA:

openssl genrsa -out private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem

Генерация пары ключей ECDSA:

openssl ecparam -genkey -name prime256v1 -out private_key_ec.pem
openssl ec -in private_key_ec.pem -pubout -out public_key_ec.pem

Извлечем открытый ключ из сертификата:

openssl x509 -in domain_ecdsa.crt -pubkey -noout

Генерация сертификата УЦ (CA)

Сгенерируйте корневой ключ

openssl genrsa -out ca.key 4096

Сгенерируйте корневой сертификат

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt

Теперь вы можете использовать эти ca.crt и ca.key для подписи сертификатов.

🔐 Как создать удостоверяющий центр (УЦ) или Certificate Authority (CA) на Ubuntu

Создание сертификатов

Генерирование закрытых ключей

Во-первых, вам нужен закрытый ключ.

Тип и размер ключа могут варьироваться в зависимости от ваших требований к безопасности.

Закрытый ключ RSA

openssl genrsa -out rsa_private.key 2048

Закрытый ключ ECDSA

openssl ecparam -name prime256v1 -genkey -out ecdsa_private.key

Сгенерируйте запрос на подписание сертификата (CSR)

CSR – это документ, который вы отправляете в центр сертификации (CA) для получения сертификата цифровой идентификации.

Он включает в себя ваш открытый ключ и другую идентификационную информацию.

👩‍💼 Как создать CSR (запрос на подпись сертификата) в Linux

Использование ключа RSA

openssl req -new -key rsa_private.key -out rsa_csr.csr

Использование ключа ECDSA

openssl req -new -key ecdsa_private.key -out ecdsa_csr.csr

Генерация самоподписанных сертификатов

Самоподписанный сертификат с RSA

openssl req -new -x509 -days 365 -key rsa_private.key -out rsa_certificate.crt

Самоподписанный сертификат с ECDSA

openssl req -new -x509 -days 365 -key ecdsa_private.key -out ecdsa_certificate.crt

Подписание CSR в вашем СA

Если вы выступаете в качестве собственного УЦ или имеете доступ к нему, вы можете подписывать CSR для генерации сертификатов.

openssl x509 -req -days 365 -in csr.csr -signkey ca.key -out signed_certificate.crt

Проверка сертификата

Проверка сертификата

openssl x509 -in certificate.crt -text -noout

Шифрование и расшифровка файлов

Шифрование файлов

Зашифруйте файл с помощью AES-256 в режиме CBC

openssl enc -aes-256-cbc -salt -in plainfile.txt -out encryptedfile.enc -k PASSWORD

Шифрование файла с помощью AES-256 в режиме GCM

openssl enc -aes-256-gcm -in plainfile.txt -out encryptedfile.enc -k PASSWORD

Зашифруйте файл с помощью 3DES

openssl enc -des-ede3-cbc -salt -in plainfile.txt -out encryptedfile.enc -k PASSWORD

Расшифровка файлов

Расшифровка файла с помощью AES-256 в режиме CBC

openssl enc -d -aes-256-cbc -in encryptedfile.enc -out decryptedfile.txt -k PASSWORD

Расшифровка файла с помощью AES-256 в режиме GCM

openssl enc -d -aes-256-gcm -in encryptedfile.enc -out decryptedfile.txt -k PASSWORD

Расшифровка файла с помощью 3DES

openssl enc -d -des-ede3-cbc -in encryptedfile.enc -out decryptedfile.txt -k PASSWORD

Шифрование файлов с помощью ключа и IV (вектора инициализации)

Сгенерируйте случайный ключ и IV для AES-256

openssl enc -aes-256-cbc -k secret -P -md sha1

Зашифруйте файл, используя сгенерированный ключ и IV

openssl enc -aes-256-cbc -in plainfile.txt -out encryptedfile.enc -K [HEX_KEY] -iv [HEX_IV]

Расшифруйте файл, используя сгенерированный ключ и IV

openssl enc -d -aes-256-cbc -in encryptedfile.enc -out decryptedfile.txt -K [HEX_KEY] -iv [HEX_IV]

Шифрование и расшифровка с помощью открытых и закрытых ключей

Зашифруйте файл с помощью открытого ключа RSA

openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.enc

Расшифровка файла с помощью закрытого ключа RSA

openssl rsautl -decrypt -inkey private.pem -in file.enc -out file_decrypted.txt

Проверка и верификация сертификатов

Просмотр сведений о сертификате

openssl x509 -in certificate.crt -text -noout

Проверка сертификата в доверенном УЦ

openssl verify -CAfile ca.crt certificate.crt

Проверка даты истечения срока действия сертификата

openssl x509 -in certificate.crt -noout -enddate

Проверка цепочки сертификатов

openssl verify -CAfile ca.crt -untrusted intermediate.crt server.crt

Проверка наличия списка отзыва сертификатов (CRL)

openssl verify -crl_check -CAfile ca.crt -CRLfile crl.pem server.crt

Проверка серийного номера сертификата

openssl x509 -in certificate.crt -noout -serial

Проверка алгоритма подписи сертификата

openssl x509 -in certificate.crt -noout -text | grep "Signature Algorithm"

Генерация сертификата с помощью поля SAN

Создайте файл san.cnf со следующим содержимым:

[ req ]
default_bits       = 2048
prompt             = no
default_md         = sha256
distinguished_name = req_distinguished_name
req_extensions     = req_ext

[ req_distinguished_name ]
C  = US
ST = New York
L  = Rochester
O  = Example Corp
OU = IT
CN = www.example.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1   = www.example.com
DNS.2   = example.com
DNS.3   = subdomain.example.com
IP.1    = 192.168.0.1

Сгенерируйте личный ключ с помощью следующей команды:

openssl genrsa -out example.key 2048

Используя файл конфигурации и закрытый ключ, сгенерируйте CSR:

openssl req -new -key example.key -out example.csr -config san.cnf

Или сгенерировать CSR с помощью однострочной команды openssl

openssl req -new -key example.key -out example.csr -subj "/C=US/ST=New York/L=Rochester/O=Example Corp/OU=IT/CN=www.example.com" -addext "subjectAltName=DNS:www.example.com,DNS:example.com,IP:192.168.0.1"

Сгенерируйте самоподписанный сертификат, используя CSR:

openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt -extensions req_ext -extfile san.cnf

Если вы хотите подписать свои ca.crt и ca.key, то можете использовать их:

openssl x509 -req -days 365 -in example.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out example.crt -extensions v3_ca -extfile <(echo -e "[v3_ca]\nsubjectAltName=DNS:www.example.com,DNS:example.com,IP:192.168.0.1")

Убедитесь, что ваш сертификат содержит поля SAN:

openssl x509 -in example.crt -text -noout | grep -A 1 "Subject Alternative Name"

Создание и управление CRLs

Создание CRL

openssl ca -gencrl -keyfile ca.key -cert ca.crt -out ca.crl

Отзыв сертификата

openssl ca -revoke client.crt -keyfile ca.key -cert ca.crt

Обновление CRL

openssl ca -gencrl -keyfile ca.key -cert ca.crt -out ca.crl

Проверка сертификата по CRL

openssl verify -crl_check -CRLfile ca.crl -CAfile ca.crt client.crt

Использование OCSP для проверки состояния сертификата

openssl ocsp -CAfile ca.crt -url http://ocsp.server.com -issuer ca.crt -cert client.crt

Настройка OpenSSL для OCSP: добавьте следующее в файл конфигурации openssl.cnf в соответствующий раздел CA:

[ ca ]
# OCSP responder URL
authorityInfoAccess = OCSP;URI:http://ocsp.server.com

[ ocsp ]
# OCSP signing configuration
default_ca = OCSP_signing

Преобразование CRL в человекочитаемый формат

openssl crl -in ca.crl -inform DER -text -noout

Преобразование форматов сертификатов

PEM в DER

openssl x509 -in certificate.pem -outform der -out certificate.der

DER в PEM

openssl x509 -in certificate.der -inform der -out certificate.pem

Переход от PEM к PKCS#12

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.pem -certfile CAcert.pem

Переход от PKCS#12 к PEM

openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes

Работа с SSL-соединениями

Протестируйте SSL-соединение:

openssl s_client -connect www.example.com:443

Просмотр сведений о сертификате сервера:

openssl s_client -connect www.example.com:443 -showcerts

Проверим протоколы и шифры SSL/TLS:

openssl s_client -connect www.example.com:443 -tls1_2

Список всех шифров:

openssl s_client -connect www.example.com:443 -cipher 'ALL'

Управление паролями и хэшами

Генерация безопасных паролей

openssl rand -base64 16

Создание криптографических хэшей

openssl dgst -sha256 filename.txt
echo -n "password" | openssl dgst -sha256

Функции деривации ключей на основе пароля

openssl enc -pbkdf2 -k password -S salt -iter 10000 -md sha256

Хеширование пароля с помощью соли

echo -n "passwordSALT" | openssl dgst -sha256

Однострочные команды OpenSSL

Генерация ключа RSA и извлечение его открытого ключа

openssl genrsa -out private.key 2048 && openssl rsa -in private.key -pubout -out public.key

Сгенерируем самоподписанный сертификат с закрытым ключом RSA

openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365 -subj "/C=US/ST=State/L=City/O=Organization/OU=Department/CN=www.example.com"

Сгенерируем самоподписанный сертификат с закрытым ключом ECC

openssl req -newkey ec:<(openssl ecparam -name prime256v1 -genkey) -nodes -x509 -days 365 -keyout domain_ecdsa.key -out domain_ecdsa.crt -subj "/C=US/ST=State/L=City/O=Organization/OU=Department/CN=www.example.com"

Создание CSR, самостоятельная подпись и проверка подписи

openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr -subj "/C=US/ST=State/L=City/O=Company/OU=Department/CN=www.example.com"
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
openssl verify -CAfile server.crt server.crt

Шифрование файла и его расшифровка

openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.enc -k secretkey
openssl enc -d -aes-256-cbc -in encrypted.enc -out decrypted.txt -k secretkey

Сгенерируйте пару ключей ECDSA и проверьте ключ

openssl ecparam -name prime256v1 -genkey -out private_ec.key
openssl ec -in private_ec.key -pubout -out public_ec.key
openssl ec -in private_ec.key -text -noout

Создание файла PKCS#12 из файлов PEM и последующее извлечение его содержимого

openssl pkcs12 -export -out certificate.p12 -inkey privateKey.key -in certificate.crt -certfile CACert.crt -password pass:yourpassword
openssl pkcs12 -in certificate.p12 -out extractedContents.pem -nodes -password pass:yourpassword

Хеширование файла и проверка хеша

openssl dgst -sha256 -out hash.txt file.txt
openssl dgst -sha256 -verify pubkey.pem -signature hash.txt file.txt

Сгенерирутем сертификат УЦ и подпишем его

openssl req -newkey rsa:2048 -nodes -x509 -days 365 -keyout ca.key -out ca.crt -subj "/C=US/ST=State/L=City/O=Organization/CN=CA"
openssl req -newkey rsa:2048 -nodes -keyout client.key -out client.csr -subj "/C=US/ST=State/L=City/O=Organization/CN=Client"
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий