bg-tutorials

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

Это руководство показывает вам как сгенерировать CSR (запрос на подпись сертификата) на Proxmox VE. Поскольку Proxmox Virtual Environment построен на базе Debian, вы создаёте CSR из командной строки через SSH с помощью утилиты OpenSSL, которая предустановлена на каждом узле. Процесс одинаков как на Proxmox VE 8.x, так и на более новой серии 9.x.

CSR — это закодированный запрос, который вы отправляете удостоверяющему центру (CA) при заказе сертификата SSL/TLS. При его создании также генерируется соответствующий закрытый ключ. Ключ остаётся на узле Proxmox и никогда не отправляется в CA, поэтому храните его в безопасности: сертификат работает только с тем ключом, с которым он был сопряжён.

Ручной CSR против встроенного клиента ACME

Proxmox VE включает встроенный клиент ACME (учётные записи находятся в разделе Datacenter > ACME, а домены добавляются для каждого узла в разделе Node > Certificates), который может запрашивать и автоматически продлевать бесплатные сертификаты от Let’s Encrypt. Если вам нужно защитить только веб-интерфейс Proxmox и общедоступное имя хоста, этот автоматизированный путь — более простой выбор, и он продлевается самостоятельно.

Вы всё же будете создавать CSR вручную, когда покупаете сертификат у коммерческого CA, когда вам нужен тип, который ACME не выдаёт (например, сертификат с проверкой организации, расширенной проверкой или wildcard-сертификат), или когда внутренняя политика требует, чтобы вы сами контролировали ключ и запрос. Остальная часть этого руководства посвящена именно этому ручному процессу.

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

Подключитесь к вашему узлу Proxmox через SSH (или откройте консоль Shell в веб-интерфейсе Proxmox). OpenSSL уже установлен. Если по какой-то причине его нет, сначала установите его:

sudo apt-get update && sudo apt-get install openssl

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

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

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

  • req -new создаёт новый запрос на сертификат.
  • -newkey rsa:2048 генерирует новый 2048-битный закрытый ключ RSA. RSA 2048 — это текущий минимум для публичных сертификатов; вы можете использовать rsa:4096 для более крупного ключа или перейти на современный ключ на эллиптических кривых (см. часто задаваемые вопросы ниже).
  • -nodes оставляет закрытый ключ незашифрованным, чтобы служба Proxmox могла прочитать его при запуске без запроса пароля.
  • -keyout mywebsite.key записывает закрытый ключ. Храните этот файл на узле и никогда не передавайте его.
  • -out mywebsite.csr записывает CSR, который вы отправите в CA.

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

Шаг 2: Предоставьте необходимую информацию о вашем домене и компании

Затем OpenSSL запрашивает у вас данные, из которых формируется отличительное имя (Distinguished Name) сертификата. Ответьте на каждый из них:

  • Country Name: официальный двухбуквенный код вашей страны, например US.
  • State or Province: полное название штата или региона, где зарегистрирована ваша компания, например Alabama.
  • City or Locality: полное название города, в котором находится ваша компания, например Mobile.
  • Organization Name: полное юридическое название вашей компании, например Your Company LLC. Для сертификата с проверкой домена (DV) это поле можно оставить пустым.
  • Organizational Unit Name: оставьте это поле пустым. Оно устарело для публичных сертификатов SSL/TLS, и CA всё равно удаляют его.
  • Common Name: полное доменное имя (FQDN), которое вы хотите защитить, например proxmox.yoursite.com. Для wildcard-сертификата поставьте звёздочку перед доменом, например *.yoursite.com.
  • Email Address: действующий адрес электронной почты (необязательно для большинства CA).
  • A challenge password: оставьте это поле пустым. Это устаревшее поле, которое публичные CA игнорируют.
  • An optional company name: оставьте это поле пустым.

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

ls

Вы должны увидеть mywebsite.key и mywebsite.csr (или то имя, которое вы выбрали).

Шаг 3: Проверка CSR перед отправкой

Перед отправкой запроса в CA убедитесь, что данные верны и подпись действительна. Опечатка в Common Name означает повторный выпуск сертификата, поэтому эта 10-секундная проверка стоит того:

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

Убедитесь, что в строке Subject указаны правильные значения Common Name и данные организации, что размер открытого ключа соответствует ожидаемому, и что OpenSSL сообщает о подтверждённой самоподписи. Если вы предпочитаете просматривать запрос в браузере, вставьте его в наш декодер CSR, который показывает те же расшифрованные поля онлайн.

Шаг 4: Отправка CSR в ваш удостоверяющий центр

Откройте файл CSR в любом текстовом редакторе:

cat mywebsite.csr

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

После того как CA проверит CSR и выпустит ваш сертификат, следуйте нашей инструкции по установке SSL на Proxmox, чтобы установить его на узле. Вы объедините выпущенный сертификат с файлом mywebsite.key, который остался на сервере.

Часто задаваемые вопросы

Где хранится закрытый ключ на Proxmox?

Закрытый ключ записывается в тот каталог, из которого вы выполнили команду OpenSSL, под именем файла, которое вы указали в параметре -keyout (например, mywebsite.key). Он никогда не покидает узел и никогда не отправляется в CA. Храните его в безопасности и делайте резервные копии, поскольку выпущенный сертификат работает только с этим конкретным ключом.

Могу ли я создать CSR ECDSA вместо RSA на Proxmox?

Да. Ключи на эллиптических кривых (ECDSA) меньше и быстрее, чем RSA, при том же уровне безопасности, и поддерживаются всеми основными CA. Сгенерируйте ключ и CSR одной командой:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes -keyout mywebsite.key -out mywebsite.csr -addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"
Кривая prime256v1 (также называемая P-256) — это безопасный вариант по умолчанию. Остальная часть процесса, включая запросы на Шаге 2, идентична.

Нужно ли мне создавать CSR, если у Proxmox есть встроенный клиент ACME?

Нет. Для бесплатного сертификата Let’s Encrypt на общедоступном имени хоста встроенный клиент ACME в разделе Datacenter > ACME обрабатывает запрос и автоматически продлевает его, без ручного CSR. Создавайте CSR вручную, когда покупаете сертификат у коммерческого CA или когда вам нужен сертификат OV, EV или wildcard, который стандартная настройка ACME не выдаёт.

Как прочитать содержимое моего CSR?

Выполните команду openssl req -noout -text -in mywebsite.csr, чтобы вывести расшифрованные поля (Subject, размер ключа и любые альтернативные имена субъекта) прямо на узле. Добавьте флаг -verify, чтобы также подтвердить действительность самоподписи перед отправкой запроса.

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

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

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

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