Генератор CSR

Создайте запрос на подписание сертификата и подходящий к нему закрытый ключ прямо на этой странице. Пару ключей генерирует Web Crypto вашего браузера, и она не покидает ваш компьютер: ни введённые вами данные, ни ключ не уходят ни на наш сервер, ни на чужой.

RSA 2048/3072/4096 · ECDSA P-256/P-384/P-521 · Ed25519 · создаётся Web Crypto в браузере, ничего не загружается
Тип ключа

Разумный выбор по умолчанию: по стойкости равен RSA 3072, а по размеру гораздо меньше.

Для кого сертификатДля большинства сертификатов не обязательно

Юридическое название вашей организации, как оно зарегистрировано.

Пишите полностью, без сокращений.

Две буквы — код ISO 3166-1.

О чём попроситьПубличный CA задаёт это из собственного профиля. Частный CA может ждать, что вы это запросите.
Назначение ключа
Расширенное назначение ключа

Только если его запросил ваш CA. Его используют при подключении по SCEP; при заказе веб-сертификата он не нужен.

Пару ключей создаёт ваш браузер, и она никуда не отправляется.

Отправьте этоЗапрос на подписание сертификатаСоздаётся в этом браузере, когда вы нажмёте кнопку
Храните этоЗакрытый ключСоздаётся в этом браузере, когда вы нажмёте кнопку

Что вы собираетесь отправитьECDSA P-256 · SHA-256

ECDSA P-256Создаётся в этом браузере, когда вы нажмёте кнопку
Что сделает с запросом центр сертификации

Введите имя или попробуйте пример, и в этой колонке появится то, что центр сертификации сделал бы с запросом, ещё до его создания.

Пару ключей создаёт Web Crypto вашего браузера во фрейме, который никуда не может подключиться, и она нигде не отправляется. Откройте панель сети и понаблюдайте.

Что такое генератор CSR?

Он создаёт два файла: запрос на подписание сертификата, который нужно отправить в центр сертификации, и закрытый ключ, который остаётся у вас. В запросе — ваш открытый ключ и имена, которые вы хотите сертифицировать, а подписан он закрытым ключом.

Формат — PKCS#10, описанный в RFC 2986. Внутри запроса имя субъекта, ваш открытый ключ, набор атрибутов с альтернативными именами и подпись, сделанная вашим закрытым ключом поверх всего перечисленного. Эта самоподпись — доказательство владения ключом: она показывает, что отправитель держит ключ, на который будет выпущен сертификат.

Эти два файла не взаимозаменяемы. Запрос предназначен для отправки: в CA, в заявку в поддержку, куда угодно. Закрытый ключ — нет, никогда. На этой странице ключ создаётся и хранится в вашем браузере. Коду страницы всё равно приходится доверять, как и любому веб-инструменту, но проверить, что он отправляет, вы можете сами: откройте панель сети и понаблюдайте во время генерации.

Два файла, созданные вместеRFC 2986 · PKCS #8

Закрытый ключХраните это

-----BEGIN PRIVATE KEY-----
  • Закрытая половинаСейчас подписывает запрос, а потом — каждое соединение с вашим сервером
  • Её открытая половинаКопируется в запрос

Один экземпляр, на вашем компьютере

Запрос на подписание сертификатаОтправьте это

-----BEGIN CERTIFICATE REQUEST-----
  1. Имя субъекта108 байтДля большинства сертификатов не обязательно
  2. Ваш открытый ключ294 байтаЕдинственное поле, которое центр сертификации наверняка использует
  3. Запрошенные имена60 байтАльтернативные имена, переданные как атрибут
  4. Подпись261 байтСделана закрытым ключом поверх всего, что выше

Секретов в нём нет

Настоящий запрос, 749 байт целиком, рядом с ключом, который его создал. Покидать ваш компьютер нужно только запросу: в нём открытая половина ключа и подпись, которую мог сделать лишь закрытый.
Генератор CSR: поля субъекта, альтернативные имена и готовый запрос на подписание сертификата вместе с ключомГенератор CSR: поля субъекта, альтернативные имена и готовый запрос на подписание сертификата вместе с ключомИменаИмена хостов, которые должен покрывать сертификат. Первое становится общим именем, остальные добавляются к нему.КлючRSA или эллиптическая кривая. Пару создаёт ваш браузер, прямо у вас на глазах.Кто выПоля субъекта. Публичный CA сам их проверяет, поэтому остаются лишь немногие.Два файлаЗапрос, который нужно отправить, и закрытый ключ, который нужно хранить. Пока вы его не сохранили, ключ существует только в вашем браузере.То же самое командойСтрока OpenSSL, создающая именно этот запрос, — на случай, если вы предпочитаете сделать всё сами.
Создание запроса: имена, тип ключа и два файла на выходе. Выберите номер, чтобы увидеть, что показывает каждая часть.

Почему ключ создаётся в вашем браузере?

Потому что закрытый ключ, попавший на чужой сервер, подпадает под собственное определение отрасли для скомпрометированного ключа — что бы этот сервер с ним ни делал потом.

Baseline Requirements CA/Browser Forum определяют это без оговорок: «Закрытый ключ считается скомпрометированным, если его значение стало известно постороннему лицу или постороннее лицо получило к нему доступ» [A Private Key is said to be compromised if its value has been disclosed to an unauthorized person, or an unauthorized person has had access to it]. Злоупотребление не требуется — достаточно того, что ключ попал к чужим.

Это не теория. В 2020 году DigiCert обнаружил 337 закрытых ключей, которые клиенты прислали вместе с запросами, отозвал все связанные сертификаты и публично об этом сообщил: «отправив закрытый ключ в DigiCert вместе с CSR, клиент скомпрометировал закрытый ключ» [by sending the private key to DigiCert along with the CSR, the customer has compromised the private key], добавив, что «из CSR мы используем только открытый ключ» [the only part of a CSR we use is the public key]. Генератор, который создаёт ключ на собственном сервере и выдаёт вам копию, по этому определению уже скомпрометировал его. Эта страница так не умеет: crypto.subtle.generateKey работает в вашем браузере, внутри изолированного фрейма, которому нельзя ни к чему подключаться, а окружающая страница видит только открытый ключ.

Где создаётся закрытый ключCA/Browser Forum TLS BR 2.3.1

Эта страница

Ваш браузер
  1. Web Crypto создаёт пару ключей crypto.subtle.generateKey
  2. Ключ подписывает запрос
  3. Вы сохраняете оба файла
Эту границу ничто не пересекает
Их сервер

Ключ существовал только на вашем компьютере

Генератор, который создаёт ключ на своём сервере

Ваш браузер
  1. Ваши имена и данные уходят на сервер
Закрытый ключ пересекает её
Их сервер
  1. Сервер создаёт пару ключей
  2. Закрытый ключ присылают вам обратно

Скомпрометирован по определению ещё до установки

«Закрытый ключ считается скомпрометированным, если его значение стало известно постороннему лицу или постороннее лицо получило к нему доступ».

определение, которое центры сертификации написали сами для себя

Это уже случалосьВ 2020 году один центр сертификации обнаружил 337 закрытых ключей, присланных вместе с запросамиВсе связанные сертификаты были отозваны

Разница не в том, как создаётся ключ, а в том, где. Ключ, побывавший на чужом сервере, уже подпадает под собственное определение отрасли для скомпрометированного ключа — что бы этот сервер с ним ни делал потом.

Как создать CSR

Введите имена хостов, выберите тип ключа и нажмите кнопку. Всё остальное необязательно: современный сертификат определяется альтернативными именами, а не субъектом.

Впишите в поле имён все имена, которые должен покрывать сертификат: example.com, www.example.com, wildcard вроде *.api.example.com или IP-адрес. Первое имя становится ещё и общим именем: если у сертификата вообще есть общее имя, Baseline Requirements требуют, чтобы оно в точности повторяло одно из альтернативных имён.

Страна, организация и город важны только для сертификата с проверкой организации (OV) или расширенной проверкой (EV), и даже тогда CA должен сам проверить их, прежде чем они попадут в сертификат. Для сертификата с проверкой домена — такой выпускает Let's Encrypt — правила допускают в субъекте только страну и общее имя. Генератор помечает два поля, которые публичный CA вычёркивает или запрещает, — организационное подразделение и адрес эл. почты, — а колонка рядом с формой показывает, что изменится.

От имён до двух файлов/csr-generator
  1. Введите имена

    Все хосты, которые должен покрывать сертификат; первое становится общим именем
  2. Выберите тип ключа

    P-256, если только его не должно прочитать что-то старое
  3. Создать запрос

    Ваш браузер создаёт ключ и подписывает им запрос
  4. Заберите два файла

    Отправьте запрос в центр сертификации; храните ключ
Вся работа так, как её делает эта страница. Всё, что идёт после имён, необязательно: современный сертификат определяется альтернативными именами, поэтому поля субъекта важны лишь при заказе с проверкой организации.

Какой тип ключа выбрать?

ECDSA P-256 — для всего нового: он так же стоек, как 3072-битный ключ RSA, гораздо меньше и допускается правилами, которым следует каждый публичный центр сертификации. RSA 2048 — когда ключ должно прочитать старое устройство.

NIST относит P-256 и RSA-3072 к одной и той же стойкости в 128 бит, а RSA-4096 вовсе не даёт собственной стойкости: следующая ступень в его таблице — 7680 бит. Так что 4096 заставляет каждого посетителя тратить лишнюю работу на рукопожатие без какого-либо описанного выигрыша. P-384 — ступень 192 бита, и Baseline Requirements допускают также P-521, но Let's Encrypt отказывается от P-521: запрос может быть вполне законным и всё же провалиться в том CA, который вы собирались использовать.

Ed25519 предлагается здесь потому, что он отлично подходит для SSH, подписи и частного CA, но ни один публичный центр сертификации не выпустит по нему TLS-сертификат. В правилах перечислены RSA и три кривые NIST, а затем сказано: «никакие другие алгоритмы или размеры ключей не допускаются» [no other algorithms or key sizes are permitted]. То же относится и к постквантовому ML-DSA: бюллетень, который разрешил бы его в публичном TLS, закрыт без принятия в октябре 2026 года. Генератор пишет об этом рядом с каждым вариантом, чтобы вы не узнавали об ограничении из письма с отказом.

Стойкость, как её сводит в таблицу NISTNIST SP 800-57 Part 1 Rev 5, Table 2
112 бит128 бит192 бита256 бит
RSA20483072768015360
RSA 40964096
ECDSA—P-256P-384P-521

4096 бит: своей ступени нет Таблица переходит от одного размера сразу к следующему, так что лишняя работа на рукопожатие ничего письменно не даёт

Нет в таблице

Ed25519Ни один публичный центр сертификации не выпускает по нему сертификаты

ML-DSAПостквантовый: бюллетень, который разрешил бы его, закрыт без принятия в октябре 2026 года

  • Одинаковая стойкость
  • Предлагается здесь
  • Есть в таблице, здесь не предлагается
  • Принимает ли Let's EncryptLet's Encrypt
Читайте поперёк, а не сверху вниз: P-256 и 3072-битный ключ RSA стоят на одной стойкости, а кривая достигает её при размере ключа в двенадцать раз меньше. Ключ может укладываться в правила и всё равно быть отклонённым тем центром сертификации, который вы собирались использовать.

Что писать в каждом поле

Имена: все хосты, которые покрывает сертификат. Страна: две буквы. Организация: ваше юридическое название — для сертификата OV или EV. Всё остальное необязательно, а часть теперь запрещена.

Организационное подразделение запрещено. По бюллетеню SC047 CA/Browser Forum ни один публичный TLS-сертификат, выпущенный с 1 сентября 2022 г., не может содержать OU; CA уберёт его, а не откажет в заказе. Адрес эл. почты в субъекте тоже не допускается в сертификате с проверкой домена, а в остальных не рекомендуется. Этот генератор по-прежнему предлагает оба поля — для частных CA — и помечает их.

Страна — это код ISO 3166-1 alpha-2: US, DE, GB, IN, а не название страны и не три буквы. Регион или область лучше писать полностью, без сокращений. Для сертификата с расширенной проверкой нужны ещё юрисдикция регистрации и регистрационный номер — генератор их предлагает.

Какие поля субъекта попадают в сертификатCA/Browser Forum TLS BR 7.1.2.7
В вашем запросеDVПроверка доменаOVПроверка организацииEVРасширенная проверка
Общее имяCN
СтранаC
ОрганизацияO
Город, регион или областьL, ST
Улица, почтовый индексstreet, postalCode
Организационное подразделениеOUЗапрещено с 1 сентября 2022 г.
Адрес эл. почтыemailAddress
Регистрационный номер, категория бизнеса, юрисдикцияserialNumber, businessCategory, jurisdictionC
  • В сертификате — в том виде, как его проверил CA
  • Допускается, но не рекомендуется
  • В сертификате такого вида его нет
  • Не допускается никогда
Заполняйте только то, что может нести покупаемый вами сертификат: центр сертификации обязан проверить каждое поле субъекта, которое оставляет, а генератор помечает поля, которые публичный CA вычёркивает.

Можно ли использовать ключ или CSR повторно?

Можно — ничто этого не запрещает, — но новый ключ для каждого сертификата занимает секунду и ограничивает то, до чего способен добраться один утёкший ключ.

Baseline Requirements прямо говорят, что «одного запроса на сертификат МОЖЕТ хватить для нескольких сертификатов, выпускаемых одному заявителю» [one certificate request MAY suffice for multiple Certificates to be issued to the same Applicant], так что использовать запрос повторно при продлении можно. Цена проявляется, когда что-то идёт не так. Если этот ключ когда-нибудь будет скомпрометирован, все сертификаты с ним придётся отозвать в течение 24 часов, а не только тот, о котором вы беспокоились.

А скомпрометированный ключ сгорает навсегда: CA «ОБЯЗАН отклонить запрос на сертификат» [SHALL reject a certificate request], если ему сообщили о компрометации ключа, так что любой CA, узнавший об этом, больше никогда не сертифицирует этот ключ. Когда срок жизни сертификатов сократится до 47 дней в 2029 году, повторно используемый ключ подписывал бы годами, через десятки продлений. Создать новый — вопрос секунды.

Один ключ за несколькими сертификатамиCA/Browser Forum TLS BR 4.9.1.1 · 6.1.1.3

Один ключ, используется повторно

Ключ утёк
  • www.example.com
  • api.example.com
  • mail.example.com

3 сертификата отозваны в течение 24 часов

А ключ больше никогда не сертифицирует ни один CA, которому о нём сообщили

Новый ключ для каждого

  • www.example.com
  • api.example.comНе затронуты
  • mail.example.comНе затронуты

1 сертификат отозван в течение 24 часов

Повторно использовать ключ можно. Цена проявляется, только когда он утёк: всё, что его несёт, отзывается сразу, а сам ключ с этого момента отклоняется.

Что происходит после отправки CSR

CA проверяет имена, большую часть остального игнорирует и присылает сертификат. Храните закрытый ключ: без него сертификат не установить.

Проверка касается имён, а не файла: запись DNS, файл на веб-сервере или письмо на адрес в этом домене. Когда она пройдена, сертификат приходит, а запрос больше не нужен: для установки, продления и отзыва он не требуется. Нужно хранить закрытый ключ, ведь без него сертификат бесполезен. Вставьте сертификат в декодер CSR и добавьте рядом закрытый ключ, чтобы убедиться, что они совпадают, прежде чем что-либо перезапускать.

Сертификат будет недолговечным. Публичный TLS-сертификат, выпущенный сегодня, не может действовать дольше 200 дней, с 15 марта 2027 г. — дольше 100, а с 15 марта 2029 г. — дольше 47. При таких сроках продление должно быть автоматическим, то есть через ACME, а клиент ACME создаёт запрос сам, так что эта страница нужна там, где клиент не справится: устройство, аппаратный комплекс, CA, который ждёт запрос, созданный вручную.

От запроса до работающего сертификатаRFC 8555 · CA/Browser Forum TLS BR 6.3.2
  1. Ваш компьютерВы отправляете запрос
  2. Центр сертификацииОн проверяет, что вы управляете каждым именемЗапись DNSФайл на веб-сервереПисьмо на адрес в этом домене
  3. Центр сертификацииОн подписывает сертификат и присылает его обратно
  4. Ваш компьютерВы устанавливаете его рядом с ключомПосле этого запрос больше не нужен
Закрытый ключ никуда не перемещается
Как долго может действовать сертификат
  1. 398 днейДействует сегодня
  2. 200 днейс 15 марта 2026 г.
  3. 100 днейс 15 марта 2027 г.
  4. 47 днейс 15 марта 2029 г.
Проверка касается имён, а не файла. Пришедший сертификат бесполезен без ключа, а такие короткие сроки — причина, по которой продление теперь должно быть автоматическим.

То же самое с OpenSSL

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes -keyout example.com.key -out example.com.csr создаёт ключ и запрос за один шаг.

Генератор пишет команду для всего, что вы заполнили, включая альтернативные имена и каждое расширение, а наши тесты прогоняют её через OpenSSL, чтобы убедиться, что она создаёт тот же субъект и те же расширения, что и страница. Добавьте -subj "/CN=example.com", чтобы не отвечать на вопросы, -addext "subjectAltName=DNS:example.com,DNS:www.example.com" для имён и -utf8, чтобы имя с диакритикой не пострадало. -nodes оставляет ключ незашифрованным: OpenSSL 3 предпочитает новое написание -noenc, но -nodes всё ещё принимает, а LibreSSL, встроенный в macOS, знает только это написание. Этот LibreSSL вообще не умеет создавать ключ Ed25519; для него нужен OpenSSL 1.1.1 или новее.

Чтобы проверить созданное: openssl req -in example.com.csr -text -verify -noout выводит каждое поле и проверяет самоподпись, а если подпись не сходится, останавливается, ничего не напечатав. Чтобы убедиться, что ключ принадлежит запросу, сравните вывод openssl req -in example.com.csr -pubkey -noout и openssl pkey -in example.com.key -pubout. Ни один стандарт не назначает CSR расширение файла, поэтому .csr, .pem, .req и .txt одинаково верны.

Одна команда, флаг за флагомOpenSSL 3 · openssl-req(1)

openssl req -new -utf8 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes -keyout example.com.key -out example.com.csr -sha256 -subj '/CN=example.com' -addext 'subjectAltName=DNS:example.com,DNS:www.example.com'

  1. openssl req -newСоздать запрос на подписание сертификата
  2. -utf8Читать субъект как UTF-8, чтобы имя с диакритикой не пострадало
  3. -newkey…и вместе с ним новую пару ключей
  4. -pkeyoptНа кривой P-256
  5. -nodesОставить файл ключа незашифрованным (в OpenSSL 3.0 это пишется ещё и -noenc)
  6. -keyoutКуда записывается закрытый ключ
  7. -outКуда записывается запрос
  8. -sha256Хеш, которым подписывается запрос
  9. -subjСубъект, чтобы команда не задавала вопросов
  10. -addextАльтернативные имена

Прочитать запрос обратно и проверить его собственную подписьopenssl req -in example.com.csr -text -verify -noout

Принадлежит ли ключ запросу? Два вывода должны совпастьopenssl req -in example.com.csr -pubkey -nooutopenssl pkey -in example.com.key -pubout

Команда, которую эта страница пишет для своего первого примера, по частям. Генератор пишет такую же строку для всего, что вы заполните, со всеми именами и расширениями, которые несёт запрос.

Как создать CSR в Windows, IIS и macOS

В Windows есть certreq и файл .inf, в macOS — Keychain Access. У каждого способа есть ловушка, о которой стоит знать заранее.

В Windows certreq -new request.inf request.req читает файл, в разделе [NewRequest] которого заданы субъект и длина ключа, а альтернативные имена идут в [Extensions] под OID 2.5.29.17 со строками _continue_ — ключа SAN= там нет, и это легко перепутать. На справочной странице Microsoft есть предупреждение, что в её примере используется SHA-1, а Let's Encrypt отклоняет запрос, подписанный SHA-1, поэтому хеш задавайте сами.

На Mac запрос создаёт Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority; тип и размер ключа спрятаны за флажком «Let me specify key pair information», а ключи RSA короче 2048 бит больше не предлагаются. Ни один из этих способов не делает альтернативные имена простыми, поэтому команда нередко оказывается более простым путём.

Как создать запрос без браузераMicrosoft Learn · Apple Support

certreqWindows Server и IIS

certreq читает обычный текстовый файл и пишет запросcertreq -new request.inf request.req
request.inf
[NewRequest]Subject = "CN=example.com"KeyAlgorithm = RSAKeyLength = 2048HashAlgorithm = sha256RequestType = PKCS10[Extensions]2.5.29.17 = "{text}"_continue_ = "DNS=example.com&"_continue_ = "DNS=www.example.com"

Альтернативные имена: расширение, названное своим OID, по одному имени на строку

Задайте хеш сами: собственный пример Microsoft построен на SHA-1, который центр сертификации отклоняет

Ключа SAN= нет

Keychain AccessmacOS

Keychain Access пишет запрос через Certificate Assistant
  1. Keychain Access
  2. Certificate Assistant
  3. Request a Certificate From a Certificate Authority
Ваш Mac называет эти меню на своём языке

Let me specify key pair information

Тип и размер ключа спрятаны за этим флажкомRSA до 4096; короче 2048 больше не предлагается
Оба способа создают ключ на вашем собственном компьютере, и это главное. Ни один не делает альтернативные имена простыми, поэтому команда нередко оказывается более лёгким путём.

Безопасен ли онлайн-генератор CSR?

Всё зависит от того, где создаётся ключ. Страница, которая создаёт его в вашем браузере, безопасна; страница, которая создаёт его на своём сервере, имела доступ к вашему закрытому ключу.

Проверка проста, и вы можете выполнить её сами: откройте панель сети в браузере, создайте запрос и понаблюдайте. Если ключ создаётся на странице, ни он, ни то, что вы вводили, никуда не уходит: здесь единственные запросы — за самой страницей и за двумя публичными списками имён, одинаковыми для всех посетителей. Если запрос уходит и приходит ключ, то этот ключ раньше существовал где-то ещё и по определению отрасли скомпрометирован ещё до установки.

Эта страница делает всю работу в браузере: пара ключей создаётся через crypto.subtle.generateKey внутри изолированного фрейма, которому нельзя ни к чему подключаться, страница собирает запрос вокруг открытого ключа, а фрейм один раз подписывает его закрытым ключом, который никогда его не покидает. Два файла появляются в вашем браузере и больше нигде. Если вы не хотите доверять этот процесс ни одной веб-странице, команда OpenSSL на этой странице делает то же самое на вашем компьютере — мы показываем её именно поэтому.

Панель сети, пока создаётся ключИнструменты разработчика › Network

Эта страница

ЗапросЧто он несёт
GETtlds.jsonСписок доменов верхнего уровня — одинаковый для всех посетителей
GETsuffixes.jsonСписок публичных суффиксов — одинаковый для всех посетителей

Ни то, что вы ввели, ни ключ не покидают страницу

Генератор, который создаёт ключ на своём сервере

ЗапросЧто он несёт
POST…/generateВаши имена и данные
200-----BEGIN PRIVATE KEY-----Закрытый ключ, созданный где-то ещё

Ключ приходит по сети: значит, он раньше существовал где-то ещё

Попробуйте сами: откройте инструменты разработчика на вкладке Network и создайте запрос. Кроме собственного кода страницы, она загружает два публичных списка, одинаковых для всех посетителей; ключ создаёт криптография самого браузера во фрейме, которому нельзя ни к чему подключаться.

Генератор CSR: вопросы и ответы

Как создать CSR?

Введите имена хостов, которые должен покрывать сертификат, выберите тип ключа — разумный выбор по умолчанию ECDSA P-256 — и нажмите кнопку. На выходе два файла: запрос на подписание сертификата, который нужно отправить в центр сертификации, и закрытый ключ, который нужно хранить. Всё происходит в вашем браузере, поэтому ничего не загружается и не сохраняется.

Безопасно ли создавать CSR онлайн?

Это зависит от того, где создаётся ключ. Если страница создаёт его на своём сервере, этот сервер имел доступ к вашему закрытому ключу, а по определению CA/Browser Forum это и есть компрометация. Если страница создаёт его в браузере, ключ его не покидает. Эта страница делает второе, и вы можете это проверить: откройте панель сети и понаблюдайте во время генерации.

Какой тип ключа выбрать?

ECDSA P-256 — для всего нового. NIST оценивает его в те же 128 бит стойкости, что и 3072-битный ключ RSA, а размер у него гораздо меньше, поэтому каждое рукопожатие обходится дешевле. RSA 2048 выбирайте, если он нужен старому устройству или балансировщику нагрузки. RSA 4096 по сравнению с 3072 ничего описанного не даёт, а Let's Encrypt не принимает P-521, хотя правила его допускают.

Можно ли использовать ключ Ed25519 для публичного сертификата?

Нет, ни один публичный центр сертификации не выпускает сертификаты по такому ключу. Baseline Requirements перечисляют RSA и кривые P-256, P-384 и P-521, а затем добавляют: «никакие другие алгоритмы или размеры ключей не допускаются». Ed25519 предлагается здесь, потому что он подходит для SSH, подписи и частного CA, но заказ публичного TLS-сертификата по нему будет отклонён.

Для чего нужен файл закрытого ключа?

Это половина пары, которая доказывает, что сертификат ваш, и она не передаётся никому. Сохраните её рядом с запросом: она понадобится, чтобы установить сертификат, который пришлёт CA, а без неё сертификат бесполезен. Если вы её потеряете, останется только новый ключ, новый запрос и новый сертификат.

Нужно ли заполнять организацию и страну?

Только для сертификата с проверкой организации (OV) или расширенной проверкой (EV), и даже тогда CA должен сам проверить эти поля, прежде чем они попадут в сертификат. Для сертификата с проверкой домена правила допускают в субъекте только страну и общее имя — всё остальное появляться не должно. Генератор помечает два поля, которые публичный CA вычёркивает или запрещает: организационное подразделение и адрес эл. почты.

Почему поле организационного подразделения выдаёт предупреждение?

Потому что OU запрещено в публичном TLS-сертификате. По бюллетеню SC047 CA/Browser Forum ни один публичный TLS-сертификат, выпущенный с 1 сентября 2022 г., не может его содержать, поэтому центры сертификации убирают его из заказа, а не отклоняют заказ. Этот генератор по-прежнему предлагает поле — для частных CA — и сообщает, что с ним сделает публичный.

Можно ли указать в одном CSR несколько доменов?

Да — для этого и нужны альтернативные имена субъекта, именно так заказывают мультидоменный сертификат, или SAN-сертификат. Добавьте все хосты, которые должен покрывать сертификат, включая вариант с www, если он вам нужен. Можно смешивать wildcard и обычные имена и добавлять IP-адреса, хотя не каждый CA продаёт сертификаты на адрес.

Можно ли использовать CSR или ключ для следующего сертификата повторно?

Можно: по правилам один запрос может служить для нескольких сертификатов одного заявителя. Не стоит этого делать из-за масштаба ущерба. Если этот ключ когда-нибудь будет скомпрометирован, все сертификаты с ним придётся отозвать в течение 24 часов, а сам ключ больше никогда не сертифицирует ни один CA, которому о нём сообщили. Создать новый — вопрос секунды.

Что такое challenge password?

Необязательный атрибут из RFC 2985, задуманный как общий секрет, который вы назвали бы, запрашивая отзыв позже. Он всё ещё используется при подключении устройств по SCEP, и некоторые службы сертификатов Microsoft его требуют. В обычном заказе веб-сертификата он не участвует, поэтому оставьте поле пустым, если ваш CA прямо его не запросил.

Подходит ли это для wildcard-сертификата?

Да. Впишите в имена *.example.com и добавьте ещё example.com, если нужно покрыть и сам домен: wildcard заменяет ровно одну метку и не совпадает с именем, под которым стоит. Звёздочка должна занимать всю крайнюю левую метку, и ни один CA не выпустит wildcard над публичным суффиксом, таким как *.co.uk.

Что делать с файлами дальше?

Отправьте запрос в центр сертификации, а закрытый ключ храните в надёжном месте так, чтобы читать его могли только вы (права 600 в Linux и macOS). Когда придёт сертификат, вставьте его и запрос в декодер CSR, чтобы убедиться, что у них один ключ, прежде чем что-либо перезапускать: несоответствие ключа сертификату лучше заметить самим, чем ждать, пока заметит ваш сервер.

Чего-то не хватает?Предложите функцию или новый инструмент