В этом руководстве показано, как создать 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

