posts projects about

Шпаргалка OpenSSL

31 октября 2023 г. server cheatsheet

Cобрал команды, которые часто использую в быту, для быстрой копипасты.

Узнать версию OpenSSL:

$openssl version

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

Просмотреть сертификат из файла:

$openssl x509 -noout -text -in 'certfile.cer'

Просмотреть сертификат на порту:

$echo | openssl s_client -showcerts -connect 4te.me:443 </dev/null | openssl x509 -text | less

Просмотреть сертификат на порту с использованием SNI (если на одном адресе висит сразу несколько SSL-сайтов, то перед установкой соедниения нужно передать домен):

$echo | openssl s_client -showcerts -servername 4te.me -connect 4te.me:443 </dev/null | openssl x509 -text

  • параметр -servername указывает домен для SNI
  • параметр -connect указывает адрес сервера, к которому нужно подключиться

Генерация сертификата

Создать ключ и самоподписанный сертификат на 365 дней (домен указывается в интерактивном режиме в поле Common Name):

$openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privkeyfile.key -out certfile.cer

Создать ключ и самоподписанный сертификат на 365 дней в неинтерактивном режиме:

$openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privkeyfile.key -out certfile.cer -subj "/C=RU/ST=State/L=City/O=CompanyName/OU=CompanySectionName/CN=domain.ru"

Создание сертфиката на основе существующего ключа (для неинтерактивного режима добавить -subj; см.выше):

$openssl req -x509 -key privkeyfile.key -new -days 365 -out certfile.cer

Получение сертификата

Для получение сертификата из центра сертификации (CA), нужно сгенерировать заявку на получение сертификата – CSR. Она генерируется на основе приватного ключа.

Для начала генерируем ключ БЕЗ пароля:

$openssl genrsa -out privkeyfile.key 2048

Теперь на основе ключа генерируем CSR:

$openssl req -new -key privkeyfile.key -out request.csr
После этого файл request.csr отправляется в центр сертификации.

Прочитать CSR:

$openssl req -in request.csr -text -noout

Просмотр ключей

Прочитать файл ключа:

$openssl rsa -text -in privkeyfile.pem -noout

Извлечь публичный ключ из файла:

$openssl rsa -in privkeyfile.pem -pubout