Это руководство показывает вам, как сгенерировать 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, чтобы установить его.
Часто задаваемые вопросы
Приватный ключ записывается в файл, указанный в параметре -out (например, example.com.key), в директории, где вы выполнили команду. Он создается локально и никогда не включается в CSR. Сохраните его резервную копию в надежном месте и ограничьте права доступа к нему, поскольку именно этот ключ понадобится вам для установки сертификата, выпущенного CA.
Оба варианта принимаются. 2048-битный RSA — это широко совместимый вариант по умолчанию и минимальный размер, допускаемый публичными CA. Ключ на эллиптической кривой (ECDSA P-256) меньше и быстрее, обеспечивая эквивалентный уровень безопасности; сгенерируйте его, заменив параметры ключа на -algorithm EC -pkeyopt ec_paramgen_curve:P-256. В любом случае CSR должен быть подписан с использованием SHA-256, что уже делают приведенные выше команды.
Флаг -addext был добавлен в OpenSSL 1.1.1. Если у вас более старая сборка (например, OpenSSL 1.0.2 на RHEL 7), используйте метод с конфигурационным файлом из Варианта B, который определяет альтернативные имена субъекта в файле san.cnf вместо командной строки.
Выполните на сервере команду openssl req -noout -text -verify -in example.com.csr. Она выводит субъект, полный список SAN, тип и размер ключа, а также алгоритм подписи, и подтверждает, что CSR соответствует своему приватному ключу. Просмотрите эти поля перед тем, как вставить CSR в форму заказа.
Вставьте весь блок целиком, от -----BEGIN CERTIFICATE REQUEST----- до -----END CERTIFICATE REQUEST----- включительно, без пропуска символов. Обе строки-маркеры используют по пять дефисов с каждой стороны. Не вставляйте приватный ключ.
Да. AlmaLinux, Rocky Linux и CentOS Stream бинарно совместимы с соответствующим релизом RHEL и поставляются с той же версией OpenSSL, поэтому команды идентичны. У нас также есть отдельное руководство о том, как сгенерировать CSR в CentOS, если вам это нужно.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

