bg-tutorials

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

В этом руководстве показано, как создать CSR (запрос на подпись сертификата) в Debian с помощью командной строки OpenSSL. Вы выполняете одну команду через SSH, которая создает сразу два файла: приватный ключ, остающийся на вашем сервере, и CSR, который вы отправляете своему центру сертификации (CA). Эти шаги работают в Debian 13 (trixie), Debian 12 (bookworm) и более ранних версиях, поскольку OpenSSL входит в базовую систему.

CSR — это небольшой текстовый блок, содержащий данные о вашем домене и открытый ключ. CA считывает его, проверяет ваш запрос и выпускает сертификат, соответствующий приватному ключу, созданному вместе с ним. Приватный ключ никогда не покидает ваш сервер, поэтому храните его в безопасности: если вы его потеряете, выпущенный сертификат станет непригодным для использования, и вам придется начинать все сначала.

Шаг 1: Войдите на сервер Debian

Откройте терминал и подключитесь к серверу через SSH. Замените your-user на имя вашей учетной записи и your-server-ip на IP-адрес или имя хоста сервера:

ssh your-user@your-server-ip

OpenSSL включен в базовую систему Debian, поэтому дополнительно устанавливать ничего не нужно. Чтобы убедиться, что он доступен, проверьте версию:

openssl version

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

Выполните команду ниже. Она создает приватный ключ и CSR за один шаг и включает альтернативные имена субъекта (SAN), которые требуют современные браузеры и CA. Запускайте её из каталога, в который у вас есть права записи, например из домашнего каталога:

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

Вот что делает каждая часть:

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

Замените mywebsite.com на ваш реальный домен и отредактируйте значения -subj в соответствии с вашей организацией. Двухбуквенный код страны (C) должен быть в верхнем регистре, например US или GB. Для сертификата с проверкой домена (DV) поля организации не проверяются, но команде всё же нужны корректные значения.

Если вы предпочитаете заполнять поля интерактивно, а не через -subj, удалите эту строку, и OpenSSL запросит у вас каждое значение:

openssl req -new -newkey rsa:2048 -nodes 
-keyout mywebsite.key 
-out mywebsite.csr 
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"

Когда появится запрос, оставьте поля challenge password и optional company name пустыми, нажав Enter. CA игнорируют эти поля, а challenge password может позже вызвать проблемы.

Добавление дополнительных доменов или wildcard-сертификата

Добавьте дополнительные имена хостов в список SAN, разделяя их запятыми. Например, чтобы включить поддомен API:

-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com,DNS:api.mywebsite.com"

Для wildcard-сертификата используйте *.mywebsite.com. Wildcard покрывает один уровень поддоменов, но не сам домен без поддомена, поэтому укажите оба варианта, если хотите покрыть и корневой домен:

-addext "subjectAltName=DNS:*.mywebsite.com,DNS:mywebsite.com"

Предпочитаете ключ ECDSA?

Ключи ECDSA меньше и быстрее, чем RSA при том же уровне безопасности, и широко поддерживаются. Чтобы создать ключ и CSR по кривой P-256 (prime256v1), замените аргумент -newkey:

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

Современная версия OpenSSL по умолчанию подписывает CSR с использованием SHA-256, что и требуют CA. Добавлять отдельный флаг для алгоритма хеширования не нужно.

Шаг 3: Проверьте CSR

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

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

Найдите в выводе verify OK, убедитесь, что строка Subject отображает ваше общее имя, и проверьте, что раздел X509v3 Subject Alternative Name содержит все нужные имена хостов. Если какого-то SAN не хватает, пересоздайте CSR с правильным значением -addext. Также вы можете вставить CSR в наш онлайн-инструмент декодер CSR, чтобы проверить эти поля в браузере.

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

Откройте файл CSR и скопируйте всё его содержимое, включая строки BEGIN и END:

cat mywebsite.csr

Блок выглядит так. Скопируйте всё от первой строки до последней, включая пять дефисов с каждой стороны маркеров BEGIN и END:

-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----

Вставьте этот блок в форму заказа SSL. После того как CA проверит CSR и выпустит SSL-сертификат, следуйте инструкции по установке SSL в Debian, чтобы развернуть его. Храните файл mywebsite.key на сервере: он нужен вам вместе с выпущенным сертификатом для включения HTTPS, и вы никогда не должны отправлять его в CA или кому-либо ещё.

Если вы предпочитаете не использовать командную строку, вы можете сформировать запрос с помощью нашего генератора CSR и вставить результат в форму заказа.

Создание CSR на других платформах

Используете другой дистрибутив Linux или сервер? Смотрите наши другие руководства по CSR:

Сэкономьте 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.