Это руководство показывает вам как сгенерировать 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, который остался на сервере.
Часто задаваемые вопросы
Закрытый ключ записывается в тот каталог, из которого вы выполнили команду OpenSSL, под именем файла, которое вы указали в параметре -keyout (например, mywebsite.key). Он никогда не покидает узел и никогда не отправляется в CA. Храните его в безопасности и делайте резервные копии, поскольку выпущенный сертификат работает только с этим конкретным ключом.
Да. Ключи на эллиптических кривых (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, идентична.
Нет. Для бесплатного сертификата Let’s Encrypt на общедоступном имени хоста встроенный клиент ACME в разделе Datacenter > ACME обрабатывает запрос и автоматически продлевает его, без ручного CSR. Создавайте CSR вручную, когда покупаете сертификат у коммерческого CA или когда вам нужен сертификат OV, EV или wildcard, который стандартная настройка ACME не выдаёт.
Выполните команду openssl req -noout -text -in mywebsite.csr, чтобы вывести расшифрованные поля (Subject, размер ключа и любые альтернативные имена субъекта) прямо на узле. Добавьте флаг -verify, чтобы также подтвердить действительность самоподписи перед отправкой запроса.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10


