bg-tutorials

Как сгенерировать CSR в Ubuntu

Этот учебник показывает вам как создать CSR в Ubuntu, а именно на сервере Apache под управлением Ubuntu, к которому вы подключаетесь по SSH. В Ubuntu для этого используется OpenSSL, поэтому вы выполняете два действия одной командой: создаёте новый закрытый ключ и соответствующий CSR (Certificate Signing Request). Данные субъекта можно передать в виде флагов, что позволяет свести весь процесс к одной строке, которую можно скопировать и вставить.

Приведённые ниже шаги работают на всех поддерживаемых версиях Ubuntu (22.04, 24.04 и 26.04 LTS), поскольку в каждой из них установлен OpenSSL 3.x. Они также работают на более старых версиях, например 20.04, где поставлялся OpenSSL 1.1.1, хотя для 20.04 уже завершился период стандартной поддержки. Современный OpenSSL по умолчанию подписывает запрос с использованием SHA-256, поэтому добавлять флаг дайджеста не нужно.

Шаг 1: Подключитесь к серверу Ubuntu

Подключитесь к серверу по SSH со своего локального компьютера (Terminal на macOS или Linux, PowerShell или Windows Terminal на Windows). Замените имя пользователя и хост на свои:

ssh your-user@your-ubuntu-server

Создавайте CSR на том же сервере, на котором будет установлен сертификат. Закрытый ключ создаётся рядом с CSR и должен оставаться на этом сервере, поэтому выполнение этих команд локально с последующим переносом ключа теряет смысл.

Шаг 2: Создайте закрытый ключ и CSR

Выполните следующую команду. Она создаёт 2048-битный ключ RSA и CSR за один шаг, при этом субъект и альтернативные имена субъекта (SAN) указываются прямо в команде, чтобы OpenSSL не задавал дополнительных вопросов:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Что делает каждая часть команды:

  • -newkey rsa:2048 создаёт новый 2048-битный ключ RSA. 2048 бит — это текущий минимум для публичных сертификатов; вы можете использовать rsa:4096 для более длинного ключа или перейти на ECDSA (см. ниже).
  • -nodes оставляет закрытый ключ незашифрованным, чтобы Apache мог считать его при запуске без запроса пароля.
  • -keyout и -out задают имена файлов закрытого ключа и CSR.
  • -subj задаёт субъект сертификата. Укажите здесь реальное название вашей компании, штат и город, а не значения-заполнители. CN (Common Name) — это ваш основной домен.
  • -addext «subjectAltName=…» перечисляет все имена хостов, которые должен покрывать сертификат. Публичные CA проверяют список SAN, поэтому включите туда и Common Name.

Замените yourdomain.com на ваш реальный домен во всех местах. Чтобы охватить дополнительные имена хостов, добавьте их в список SAN, разделяя запятыми, например DNS:api.yourdomain.com. Для wildcard-сертификата укажите как wildcard, так и обычный домен: DNS:*.yourdomain.com,DNS:yourdomain.com.

Если вы предпочитаете ключ ECDSA (меньше и быстрее, с широкой поддержкой P-256), создайте ключ и CSR следующим образом:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Шаг 3: Найдите созданные файлы

Выведите список файлов в текущем каталоге, чтобы убедиться, что оба файла созданы:

ls

Вы должны увидеть два новых файла:

  • yourdomain.key: ваш закрытый ключ. Храните его на сервере, делайте надёжные резервные копии и никогда никому не передавайте, включая удостоверяющий центр. Тот, кто владеет ключом, может выдавать себя за ваш сайт.
  • yourdomain.csr: ваш запрос на подпись сертификата (Certificate Signing Request). Именно этот файл вы отправляете провайдеру SSL.

Шаг 4: Проверьте CSR (необязательно, но рекомендуется)

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

openssl req -noout -text -verify -in yourdomain.csr

Убедитесь, что строка Subject отображает ваши данные, что X509v3 Subject Alternative Name содержит все ожидаемые имена хостов, и что проверка подписи выводит verify OK. Алгоритм подписи должен быть sha256WithRSAEncryption (или ecdsa-with-SHA256 для ключа ECDSA). Если вы предпочитаете не использовать командную строку, вставьте CSR в наш онлайн-инструмент декодер CSR, чтобы просмотреть те же поля в браузере.

Шаг 5: Отправьте ваш CSR

Чтобы скопировать CSR для вашего заказа, выведите его содержимое:

cat yourdomain.csr

Вы увидите блок текста, похожий на этот:

-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----

Скопируйте весь блок целиком, включая строки ——BEGIN CERTIFICATE REQUEST—— и ——END CERTIFICATE REQUEST—— (у каждого маркера по пять дефисов с обеих сторон). Весь этот блок и есть ваш CSR. Вставьте его в форму заказа при покупке и оставьте соответствующий закрытый ключ на сервере.

Если вы предпочитаете не использовать командную строку, вы также можете сформировать запрос с помощью нашего онлайн-инструмента Генератор CSR. Обратите внимание, что закрытый ключ создаётся в вашем браузере, поэтому сохраните его самостоятельно и перенесите на сервер.

После того как ваш CA проверит CSR и выдаст сертификат, продолжите работу согласно инструкциям по установке SSL на Ubuntu.

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

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

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

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