bg-tutorials

Как сгенерировать CSR на Red Hat Linux

Это руководство показывает вам, как сгенерировать CSR (запрос на подпись сертификата) в Red Hat Enterprise Linux с помощью командной строки OpenSSL. В процессе создаются два файла:

  • Приватный ключ, который остается на вашем сервере и никогда не передается третьим лицам.
  • CSR, который вы отправляете своему удостоверяющему центру (CA) при заказе сертификата.

Здесь рассмотрены два подхода: метод в одну команду для современных версий OpenSSL и метод с конфигурационным файлом для более старых версий OpenSSL, которые не поддерживают встроенные расширения. Оба способа создают CSR, соответствующий требованиям SAN, подписанный с использованием SHA-256, что и требуется публичным CA.

Перед началом: проверьте версию OpenSSL

OpenSSL входит по умолчанию в каждый поддерживаемый релиз RHEL. Убедитесь, что он установлен, и проверьте версию, поскольку от нее зависит, какой из методов ниже вы можете использовать:

openssl version

Что входит в каждый актуальный релиз Red Hat:

  • RHEL 10 (выпущен в 2025 году, текущая основная версия): OpenSSL 3.x
  • RHEL 9: OpenSSL 3.x
  • RHEL 8: OpenSSL 1.1.1
  • RHEL 7: OpenSSL 1.0.2 (поддержка RHEL 7 завершилась в 2024 году; перенесите эти рабочие нагрузки на поддерживаемый релиз, как только сможете)

OpenSSL 1.1.1 и 3.x поддерживают флаг встроенного расширения, используемый в методе одной команды, поэтому на RHEL 8, 9 и 10 вы можете использовать Вариант A ниже. Если команда openssl version показывает версию 1.0.2 или более старую (RHEL 7), используйте метод с конфигурационным файлом в Варианте B.

Если OpenSSL по каким-то причинам отсутствует, установите его с помощью менеджера пакетов для вашего релиза:

# RHEL 8, 9, and 10
sudo dnf install openssl
# RHEL 7
sudo yum install openssl

В RHEL 8 и более новых версиях yum является совместимым псевдонимом для dnf, поэтому обе команды работают на этих версиях.

Вариант A: одна команда (OpenSSL 1.1.1 и 3.x)

Это самый быстрый способ на RHEL 8, 9 и 10. Сначала генерируется приватный ключ, затем создается CSR со встроенными альтернативными именами субъекта (SAN).

Шаг 1: Сгенерируйте приватный ключ

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key

Это создает 2048-битный RSA-приватный ключ с именем example.com.key в текущей директории. 2048-битный RSA — это минимум, принимаемый публичными CA; для современного ключа на эллиптических кривых замените параметры алгоритма на -algorithm EC -pkeyopt ec_paramgen_curve:P-256. Держите этот файл в секрете: он остается на вашем сервере и никогда не отправляется в CA.

Шаг 2: Создайте CSR с SAN

Выполните следующую команду, скорректировав поля субъекта и доменные имена в соответствии со своими:

openssl req -new -sha256 -key example.com.key -out example.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=example.com" 
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"

Замените example.com на ваш реальный домен во всех местах и укажите свои данные в полях субъекта:

  • C: двухбуквенный код страны (например, US).
  • ST: полное название штата или региона.
  • L: город или населенный пункт.
  • O: юридическое название организации (для одиночного DV-сертификата можно не указывать).
  • CN: основное полное доменное имя, например www.example.com.

Перечислите все имена узлов, которые должен охватывать сертификат, в значении subjectAltName. Современные браузеры проверяют список SAN, а не общее имя (Common Name), поэтому включите туда каждое имя, включая основной домен. Команда записывает CSR в файл example.com.csr.

Вариант B: метод с конфигурационным файлом (более старый OpenSSL)

Если команда openssl version показывает сборку, которая не поддерживает флаг -addext (OpenSSL 1.0.2 и более старые версии, как в RHEL 7), определите SAN в небольшом конфигурационном файле.

Шаг 1: Создайте конфигурационный файл (san.cnf)

Создайте файл с именем san.cnf в текстовом редакторе и вставьте следующее содержимое, отредактировав значения для своего домена и организации:

[ req ]
default_bits = 2048
prompt = no
distinguished_name = dn
req_extensions = req_ext

[ dn ]
C = US
ST = California
L = San Jose
O = Your Company LLC
CN = example.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = example.com
DNS.2 = www.example.com

Добавляйте дополнительные имена узлов, продолжая нумерацию: DNS.3, DNS.4 и так далее.

Шаг 2: Сгенерируйте ключ и CSR

Сгенерируйте приватный ключ:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key

Затем создайте CSR с помощью конфигурационного файла:

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

Проверьте CSR

Перед отправкой убедитесь, что CSR содержит правильные данные и корректную подпись. Эта команда выводит субъект, список SAN, размер ключа и проверяет собственную подпись запроса:

openssl req -noout -text -verify -in example.com.csr

Убедитесь, что строка Subject и записи X509v3 Subject Alternative Name содержат все ожидаемые домены, что публичный ключ имеет размер не менее 2048 бит RSA (или это ключ на эллиптической кривой P-256), и что алгоритм подписи — SHA-256. Строка certificate request self-signature verify OK (в более старых сборках — verify OK) означает, что CSR и приватный ключ соответствуют друг другу. Если вам удобнее работать в браузере, вставьте CSR в наш онлайн-инструмент CSR decoder, чтобы просмотреть те же данные.

Отправьте CSR

Откройте файл example.com.csr в текстовом редакторе и скопируйте все его содержимое, включая строки-маркеры -----BEGIN CERTIFICATE REQUEST----- и -----END CERTIFICATE REQUEST----- (каждый маркер использует пять дефисов с каждой стороны). Вставьте весь блок в форму заказа при запросе сертификата у своего SSL-провайдера.

Храните приватный ключ, example.com.key, на сервере. Не отправляйте его в CA и никуда не вставляйте: это секретная половина пары, и она никогда не должна выходить из-под вашего контроля. После того как CA проверит CSR и выпустит сертификат, следуйте нашим инструкциям по установке SSL на Red Hat Linux, чтобы установить его.

Часто задаваемые вопросы

Где хранится приватный ключ при генерации CSR в RHEL?

Приватный ключ записывается в файл, указанный в параметре -out (например, example.com.key), в директории, где вы выполнили команду. Он создается локально и никогда не включается в CSR. Сохраните его резервную копию в надежном месте и ограничьте права доступа к нему, поскольку именно этот ключ понадобится вам для установки сертификата, выпущенного CA.

Следует ли использовать RSA или ECDSA для ключа?

Оба варианта принимаются. 2048-битный RSA — это широко совместимый вариант по умолчанию и минимальный размер, допускаемый публичными CA. Ключ на эллиптической кривой (ECDSA P-256) меньше и быстрее, обеспечивая эквивалентный уровень безопасности; сгенерируйте его, заменив параметры ключа на -algorithm EC -pkeyopt ec_paramgen_curve:P-256. В любом случае CSR должен быть подписан с использованием SHA-256, что уже делают приведенные выше команды.

Моя версия OpenSSL не поддерживает -addext. Что делать?

Флаг -addext был добавлен в OpenSSL 1.1.1. Если у вас более старая сборка (например, OpenSSL 1.0.2 на RHEL 7), используйте метод с конфигурационным файлом из Варианта B, который определяет альтернативные имена субъекта в файле san.cnf вместо командной строки.

Как проверить корректность CSR перед заказом?

Выполните на сервере команду openssl req -noout -text -verify -in example.com.csr. Она выводит субъект, полный список SAN, тип и размер ключа, а также алгоритм подписи, и подтверждает, что CSR соответствует своему приватному ключу. Просмотрите эти поля перед тем, как вставить CSR в форму заказа.

Какую часть CSR нужно вставлять в форму заказа?

Вставьте весь блок целиком, от -----BEGIN CERTIFICATE REQUEST----- до -----END CERTIFICATE REQUEST----- включительно, без пропуска символов. Обе строки-маркеры используют по пять дефисов с каждой стороны. Не вставляйте приватный ключ.

Работает ли это точно так же в AlmaLinux, Rocky Linux и CentOS?

Да. AlmaLinux, Rocky Linux и CentOS Stream бинарно совместимы с соответствующим релизом RHEL и поставляются с той же версией OpenSSL, поэтому команды идентичны. У нас также есть отдельное руководство о том, как сгенерировать CSR в CentOS, если вам это нужно.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.