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-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.