Что такое CSR и как создать запрос на подпись SSL-сертификата
CSR (Certificate Signing Request) означает запрос на подпись сертификата. Он содержит открытый ключ и сведения, необходимые для выпуска SSL/TLS-сертификата. Создать запрос можно в панели хостинга, через OpenSSL на сервере или в браузере. Выберите тот способ, при котором сможете сохранить закрытый ключ и затем установить сертификат в нужную службу.
CSR, закрытый ключ и сертификат: три разных файла
| Файл | Что в нем | Куда передавать |
|---|---|---|
| CSR, обычно .csr | Открытый ключ, имена и запрошенные сведения о владельце | Центру сертификации или в форму заказа сертификата. |
| Закрытый ключ, обычно .key | Секретная часть пары ключей | Хранить под своим контролем; установить в нужную службу по защищенному каналу. |
| Сертификат, обычно .crt или .pem | Открытый ключ и имена, заверенные центром сертификации | Установить вместе с подходящим ключом и промежуточными сертификатами. |
Расширение файла само по себе ничего не доказывает. CSR в текстовом формате начинается строкой BEGIN CERTIFICATE REQUEST, закрытый ключ содержит PRIVATE KEY. Открытый ключ из CSR связан с конкретным закрытым ключом. Центр сертификации проверяет запрос и права на имена; наличие CSR еще не подтверждает эти права.
Как создать CSR в панели хостинга или IIS
- Откройте раздел SSL/TLS-сертификатов именно того сайта, где планируете установку. Найдите создание запроса CSR. Если сертификатом уже управляет автоматизация, сначала уточните, нужен ли ручной запрос вообще.
- Укажите домен и другие нужные имена, если панель позволяет их задать. Для сертификата с проверкой организации заполните ее данные по требованиям выбранного центра, а не произвольным текстом.
- Создайте запрос и сохраните CSR. Ключ обычно остается в панели или хранилище сервера: проверьте это до отправки запроса. После выпуска завершайте установку там, где доступен именно этот ключ.
Например, в Plesk нужные действия находятся в разделе домена SSL/TLS Certificates; порядок и ограничения описаны в инструкции Plesk. Генерация SAN-запросов доступна не во всех интерфейсах, поэтому проверьте список имен в готовом CSR.
В Windows/IIS запрос создают на узле сервера через Server Certificates → Create Certificate Request. Это путь IIS, а не команда Linux; ключ сохраняется в хранилище Windows. Пошаговый пример есть у AWS для IIS. Не выбирайте Create Self-Signed Certificate вместо запроса к публичному центру.
Как создать CSR через OpenSSL на сервере
Пример ниже рассчитан на оболочку Linux и OpenSSL 3.x. В новой пустой папке с ограниченным доступом замените example.com и www.example.com своими именами. Убедитесь, что файлов с такими названиями еще нет: команда записывает новый ключ и запрос.
umask 077
openssl req -new -newkey rsa:2048 -sha256 -noenc \
-keyout example.com.key -out example.com.csr \
-subj "/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"
CN задает основное имя, SAN перечисляет все нужные DNS-имена. Параметр -noenc сохраняет ключ без парольного шифрования, чтобы служба могла запускаться без ручного ввода пароля. umask 077 ограничивает доступ к новым файлам владельцем. Файл ключа нельзя хранить в публичной папке сайта; для ключа с паролем уберите -noenc и учтите способ запуска службы. Параметры описаны в документации openssl req.
Как создать CSR онлайн, сохранив ключ у себя
- Откройте генератор CSR по HTTPS на устройстве, которому доверяете. Введите домен, раскройте дополнительные адреса и проверьте, нужна ли версия с www или основной домен для Wildcard.
- Выберите тип ключа, совместимый с сервером и центром сертификации. Генератор поддерживает RSA 2048, RSA 4096 и ECDSA P-256. При необходимости заполните данные организации, затем создайте запрос.
- Скачайте оба результата. Отправляйте CSR, а закрытый ключ сохраните отдельно в защищенном месте. В генераторе Host4Biz ключ создается в браузере и на наш сервер не уходит; копии для восстановления у нас нет.
Если правила вашей компании требуют создавать ключ на сервере или в специальном устройстве, используйте предусмотренный ими путь. Проверка браузерной генерации не заменяет доверия к самому устройству и загруженной странице.
Как проверить готовый CSR перед отправкой
В том же генераторе выберите проверку готового CSR и вставьте запрос целиком. Сверьте имена SAN, тип и длину ключа, сведения об организации и результат проверки подписи. Для файла на сервере используйте:
openssl req -in example.com.csr -noout -text -verify
Команда показывает содержимое запроса и проверяет его собственную подпись. Это не проверка прав на домен и не подтверждение того, что центр выпустит сертификат. Если нужно убедиться, что рядом лежит правильный закрытый ключ, сравните SHA-256 двух открытых ключей:
openssl pkey -in example.com.key -pubout -outform DER | openssl dgst -sha256
openssl req -in example.com.csr -pubkey -noout | openssl pkey -pubin -outform DER | openssl dgst -sha256
Хеши должны совпасть. Команды выводят отпечатки открытого ключа, а не сам закрытый ключ. Такой способ подходит и для RSA, и для EC. Если сохранился только старый сертификат, создать новую рабочую пару из него нельзя: для нового запроса нужен соответствующий закрытый ключ или новая пара.
Что сохранить до установки сертификата
Сохраните CSR, подходящий закрытый ключ и список заказанных имен. Сделайте защищенную резервную копию ключа, ограничьте доступ и передавайте его только туда, где будет работать TLS. Не отправляйте его по почте, в форму заказа или в запрос поддержки. При потере ключа понадобятся новая пара, новый CSR и перевыпуск сертификата.
Подготовленный CSR можно использовать при заказе подходящего SSL-сертификата. После выпуска установите сертификат с его ключом и цепочкой, затем проверьте каждое имя сайта или почтовой службы. Сохраненный CSR сам по себе HTTPS не включает.