В этом руководстве показано, как сгенерировать CSR (Certificate Signing Request) в Windows с помощью инструментов, встроенных в операционную систему.
CSR — это текстовый блок формата PKCS #10, который содержит ваш открытый ключ и данные субъекта для передачи в удостоверяющий центр (CA), который подписывает его и возвращает вам SSL/TLS сертификат. Соответствующий закрытый ключ остаётся на машине, на которой был сгенерирован запрос.
В Windows есть три встроенных способа создать CSR, и каждый из них рассмотрен ниже. Выберите тот, который подходит вашему рабочему процессу:
- Оснастка Certificates MMC (графическая), которая проведёт вас через мастер и позволит добавить Subject Alternative Name. Это способ, описанный в оригинальном руководстве, и его выбирает большинство пользователей.
- Утилита командной строки certreq.exe с INF-файлом, которая поддерживает скриптинг, поддерживает SAN и является стандартным методом на Windows Server.
- Исполняемый файл OpenSSL для Windows (отдельная загрузка), который создаёт CSR точно так же, как это делают администраторы Linux.
Если вы используете веб-сервер с собственным процессом создания CSR, используйте его вместо общих шагов для Windows: см. отдельные руководства для IIS и Microsoft Exchange. Приведённые ниже шаги охватывают Windows 10, Windows 11 и Windows Server с версии 2016 по 2025; перед началом работы войдите в систему под учётной записью с правами локального администратора.
Создание CSR с помощью оснастки Certificates MMC
Консоль управления Microsoft (MMC) поставляется с каждой поддерживаемой версией Windows и предоставляет мастер Create Custom Request, который может создать CSR с записью SAN. Мастер сохраняет новый закрытый ключ в хранилище сертификатов локального компьютера, поэтому любая служба Windows на этой машине (IIS, ADFS, RD Gateway, RDP) сможет использовать выданный сертификат после его установки.
Шаг 1: Откройте оснастку MMC Certificates для локального компьютера
Нажмите Win + R, введите приведённую ниже команду и нажмите Enter:
mmc
В пустой консоли MMC откройте File > Add/Remove Snap-in. Выберите Certificates в списке слева, нажмите Add, выберите Computer account, нажмите Next, оставьте выбранным Local computer и нажмите Finish, затем OK. Оснастка Certificates теперь привязана к хранилищу локального компьютера, из которого считывают данные службы Windows.
Шаг 2: Запустите пользовательский запрос на сертификат
В левой панели разверните Certificates (Local Computer) и щёлкните правой кнопкой мыши по Personal. Выберите All Tasks > Advanced Operations > Create Custom Request. Откроется мастер Certificate Enrollment. Нажмите Next.
На экране Select Certificate Enrollment Policy выберите Proceed without enrollment policy в разделе Custom Request и нажмите Next. Это указывает Windows создать автономный CSR для внешнего CA, а не регистрировать сертификат по внутреннему шаблону Active Directory Certificate Services.
Шаг 3: Выберите шаблон и формат запроса
На экране Custom request установите для параметра Template значение (No template) CNG key, оставьте Request format на PKCS #10 и нажмите Next. CNG (Cryptography Next Generation) — это современный поставщик ключей Windows, и это правильный выбор для новых запросов; устаревший вариант CSP нужен только для совместимости со старыми приложениями.
На экране Certificate Information разверните стрелку Details рядом с записью запроса и нажмите Properties. Диалоговое окно Certificate Properties — это место, где настраивается остальная часть CSR.
Шаг 4: Заполните данные субъекта и Subject Alternative Names
На вкладке General введите понятное имя и, при желании, описание, чтобы позже вы могли идентифицировать ожидающий запрос в хранилище сертификатов.
Перейдите на вкладку Subject. В разделе Subject name оставляйте Type на Full DN только если вы точно знаете, что делаете; в большинстве случаев добавляйте каждый компонент по очереди с помощью выпадающего списка Type. Для каждого из следующих атрибутов выберите тип, введите значение и нажмите Add:
- Common Name: полное доменное имя, которое вы хотите защитить, например, www.yourdomain.com. Для wildcard-сертификата поставьте звёздочку перед корневым доменом, например, *.yourdomain.com.
- Country: двухбуквенный код страны по ISO, например, US, GB или DE.
- State: полное название штата или региона (например, California, а не CA).
- Locality: полное название города, в котором зарегистрирована ваша организация (например, San Jose, а не SJ).
- Organization: юридическое название вашей компании, точно как в регистрационных документах. Обязательно для сертификатов OV и EV. Для сертификатов Domain Validation (DV) это поле игнорируется, поэтому подойдёт любое условное значение.
Пропустите атрибут Email. Согласно RFC 5280, в новых сертификатах адрес электронной почты должен указываться в расширении Subject Alternative Name (как rfc822Name), а не в Distinguished Name субъекта, и публичные CA могут удалить значение email из субъекта TLS-сертификата. Если не указывать его, CSR остаётся чистым.
В разделе Alternative name той же вкладки установите Type на DNS и добавьте каждое имя хоста, которое должен покрывать сертификат, нажимая Add для каждой записи. Обязательно укажите здесь и Common Name: браузеры, .NET, Java, Go и другие современные TLS-клиенты строго проверяют имя хоста по списку SAN и игнорируют Common Name. Типичный веб-сертификат использует две DNS-записи:
- yourdomain.com
- www.yourdomain.com
Для wildcard-заказа добавьте и wildcard-запись, и корневой домен: *.yourdomain.com и yourdomain.com.
Шаг 5: Настройте ключ и подпись
Перейдите на вкладку Private Key и по очереди разверните каждый раздел.
- Cryptographic Service Provider: оставьте выбранным значение по умолчанию — RSA, Microsoft Software Key Storage Provider. Это современный CNG-провайдер для RSA-ключей.
- Key options: установите Key size на 2048 (текущий минимум для публичных CA). Выбирайте 3072 или 4096 только если ваша политика требует более крупного ключа; компромисс — немного более медленное установление TLS-соединения. Отметьте Make private key exportable, если хотите иметь возможность сделать резервную копию ключа или перенести выданный сертификат на другой сервер.
- Select Hash Algorithm: в разделе Select hash algorithm выберите sha256. SHA-1 больше не принимается публичными CA, а SHA-256 является современным значением по умолчанию. Оставьте флажок Use alternate signature format снятым.
Нажмите OK, чтобы закрыть диалоговое окно свойств, затем нажмите Next в мастере.
Шаг 6: Сохраните файл CSR
На экране Where do you want to save the offline request? установите File format на Base 64 (CA ожидают PEM в кодировке base64, а не бинарный формат). Нажмите Browse, выберите папку, которую вы легко найдёте позже (отдельная папка C:certs или рабочий стол удобнее, чем путь по умолчанию в Windows), присвойте файлу имя с расширением .req или .txt и нажмите Save. Нажмите Finish, чтобы записать CSR.
Мастер записывает CSR в файл и сохраняет соответствующий закрытый ключ в разделе Certificates (Local Computer) > Certificate Enrollment Requests. Не удаляйте этот ожидающий запрос: когда CA вернёт выданный сертификат, Windows автоматически свяжет его с ожидающим ключом.
Шаг 7: Скопируйте CSR и отправьте его в CA
Откройте сохранённый файл в Блокноте. Вы должны увидеть блок, похожий на этот:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----
Выделите весь блок, включая строки с пятью дефисами BEGIN NEW CERTIFICATE REQUEST и END NEW CERTIFICATE REQUEST, скопируйте его и вставьте в поле CSR формы заказа SSL.
Создание CSR с помощью certreq.exe и INF-файла
Утилита командной строки certreq.exe поставляется с каждой версией Windows Server, а также присутствует в клиентских Windows 10 и 11. Это правильный метод, если вы хотите автоматизировать создание CSR с помощью скрипта, задать нестандартные параметры ключа или сформировать запрос удалённо в сеансе, где невозможно запустить MMC. Процесс состоит из трёх частей: создать INF-файл запроса, выполнить certreq -new для генерации CSR, а затем отправить CSR в ваш CA.
Шаг 1: Создайте INF-файл запроса
Откройте Блокнот от имени администратора и сохраните приведённый ниже файл как request.inf. Отредактируйте строку Subject и записи DNS в разделе [Extensions] в соответствии с вашим доменом:
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=www.yourdomain.com, O=Your Company, L=San Jose, S=California, C=US"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256
[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.yourdomain.com&"
_continue_ = "dns=yourdomain.com"
Примечания к значениям:
- Subject: одна строка с компонентами, разделёнными запятыми. Используйте двухбуквенный код страны по ISO в C= и пишите названия штата и города полностью.
- KeyLength: минимум 2048. Установите 3072 или 4096, если ваша политика требует более крупного ключа.
- Exportable = TRUE: позволяет экспортировать закрытый ключ вместе с выданным сертификатом (для резервного копирования или установки на второй сервер). Установите значение FALSE, если хотите привязать ключ к этой машине.
- MachineKeySet = TRUE: сохраняет ключ в хранилище локального компьютера, из которого считывают данные такие службы, как IIS. Оставляйте этот параметр включённым для серверных нагрузок.
- HashAlgorithm = SHA256: подписывает запрос с помощью SHA-256, современного значения по умолчанию. В более старых примерах иногда по умолчанию используется SHA-1, который публичные CA больше не принимают.
- 2.5.29.17: OID для Subject Alternative Name. Добавьте одну строку _continue_ на каждое имя хоста; все строки, кроме последней, должны заканчиваться разделителем &. Укажите здесь и Common Name, потому что TLS-клиенты проверяют его по списку SAN.
Шаг 2: Сгенерируйте CSR
Откройте Командную строку или PowerShell с повышенными правами, перейдите в папку с файлом request.inf и выполните:
certreq -new request.inf request.csr
Утилита создаёт закрытый ключ в хранилище локального компьютера и записывает запрос PKCS #10 в файл request.csr. Откройте файл, скопируйте весь блок от BEGIN NEW CERTIFICATE REQUEST до END NEW CERTIFICATE REQUEST и вставьте его в форму заказа.
Когда CA вернёт выданный сертификат, завершите привязку с помощью команды:
certreq -accept certnew.cer
Это связывает выданный сертификат с закрытым ключом, который ожидал в хранилище, после чего сертификат становится доступным для любой службы Windows, которой он нужен.
Создание CSR в Windows с помощью OpenSSL
Windows не поставляется с OpenSSL, но поддерживаемая сборка для Windows доступна на сайте Shining Light Productions. Процесс работы с OpenSSL идентичен процессу в Linux и создаёт ключ и CSR в виде двух отдельных файлов, что полезно, если вы планируете развернуть сертификат на платформе, не использующей хранилище сертификатов Windows (например, стороннем обратном прокси-сервере, Tomcat или собственном приложении).
Установите пакет Win64 OpenSSL Light (обычного установщика достаточно для работы с CSR), и когда программа установки спросит, скопируйте DLL-файлы OpenSSL в каталог bin OpenSSL, а не в системную папку Windows. Откройте Командную строку или PowerShell и убедитесь, что OpenSSL доступен через PATH:
openssl version
Если команда не найдена, либо добавьте папку установки (обычно C:Program FilesOpenSSL-Win64bin) в переменную PATH, либо вызывайте openssl, указывая полный путь. Затем сгенерируйте CSR и ключ одной командой:
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr -subj "/C=US/ST=California/L=San Jose/O=Your Company/CN=www.yourdomain.com" -addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Что делает каждый флаг:
- -newkey rsa:2048 создаёт новый 2048-битный RSA-ключ. Используйте rsa:4096 для более крупного ключа, если этого требует ваша политика.
- -nodes записывает закрытый ключ без пароля, чтобы использующая его служба могла считать его при запуске без запроса пароля. В OpenSSL 3.x этот флаг переименован в -noenc; -nodes по-прежнему работает, но считается устаревшим.
- -keyout и -out задают имена файла ключа и файла CSR.
- -subj передаёт данные субъекта прямо в команде, чтобы OpenSSL не останавливался с интерактивными вопросами.
- -addext «subjectAltName=…» добавляет список SAN. Укажите здесь и Common Name.
OpenSSL 3.x по умолчанию подписывает CSR с помощью SHA-256, поэтому дополнительный флаг для алгоритма хеширования не нужен. Обратите внимание на разный заголовок: OpenSSL записывает -----BEGIN CERTIFICATE REQUEST-----, тогда как мастер MMC и certreq записывают -----BEGIN NEW CERTIFICATE REQUEST-----. Оба варианта являются обычными запросами PKCS #10, и каждый CA принимает любую из этих форм. Относитесь к получившемуся файлу yourdomain.key как к секретной информации: тот, у кого он есть, может выдать себя за владельца сертификата.
Проверьте CSR перед отправкой
Перед отправкой запроса в ваш CA убедитесь в правильности Common Name, записей SAN, размера ключа и алгоритма подписи. В командной строке Windows утилита certutil может прочитать любой файл CSR:
certutil -dump request.csr
Если у вас установлен OpenSSL, аналогичная команда выводит те же данные:
openssl req -noout -text -in request.csr
Предпочитаете работать через браузер? Вставьте содержимое запроса в декодер CSR от SSL Dragon, чтобы прочитать субъект, список SAN, размер ключа и алгоритм подписи. Убедитесь, что Common Name соответствует имени хоста, которое будут использовать клиенты, что каждое необходимое имя присутствует в списке SAN и что алгоритм подписи — sha256WithRSAEncryption (или сильнее).
Если вы предпочитаете сгенерировать CSR не на сервере, наш генератор CSR создаёт запрос (с SAN) на основе одной формы. Компромисс заключается в том, что закрытый ключ создаётся в вашем браузере, а не в хранилище Windows, поэтому, когда CA выдаст сертификат, вам нужно будет объединить сертификат и ключ в файл .pfx и импортировать его через консоль управления сертификатами вашего приложения.
Часто задаваемые вопросы
Если вы защищаете службу Windows, которая считывает данные из хранилища сертификатов локального компьютера (IIS, ADFS, RDP, RD Gateway, WinRM), используйте оснастку MMC или certreq.exe: оба способа создают ключ в нужном месте, чтобы выданный сертификат был готов к привязке. Если вы готовите CSR для платформы, отличной от Windows, или хотите получить отдельный файл ключа, который можно скопировать на сервер Linux или стороннее устройство, используйте OpenSSL в Windows. Все три метода дают на выходе один и тот же PKCS #10 CSR, который принимает любой публичный CA.
Нет. RFC 5280 предписывает указывать адрес электронной почты в новых сертификатах в расширении Subject Alternative Name как rfc822Name, а не в Distinguished Name субъекта. Публичные CA могут удалить значение email из субъекта TLS-сертификата при выдаче, поэтому добавлять его для HTTPS не имеет смысла. Не заполняйте поле Email ни в мастере, ни в INF-файле.
При использовании оснастки MMC или certreq.exe ключ находится в разделе Certificates (Local Computer) > Certificate Enrollment Requests в виде ожидающего запроса и автоматически связывается с выданным сертификатом при завершении регистрации. При использовании OpenSSL ключ — это файл .key, записанный рядом с CSR; защищайте его как любую другую секретную информацию и создайте резервную копию перед развёртыванием сертификата.
В PowerShell нет собственного командлета для CSR. New-SelfSignedCertificate создаёт пару ключей, но в результате получается готовый самоподписанный сертификат, а не CSR, который может подписать публичный CA. Поддерживаемый способ создания запроса из PowerShell — записать показанный выше INF-файл и вызвать для него certreq.exe (certreq -new request.inf request.csr). Сторонние модули, такие как PSPKI, оборачивают certreq в более удобный интерфейс, но в основе по-прежнему лежит certreq.
Ожидающий запрос и его закрытый ключ остаются в разделе Certificates (Local Computer) > Certificate Enrollment Requests. Сами по себе они ничего не делают и ничего не нарушают, но со временем накапливаются. Откройте оснастку MMC Certificates, просмотрите ожидающие запросы и удалите те, которые вам больше не нужны; это также удалит соответствующий ключ.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

