Генератор CSR
Создайте запрос на подписание сертификата и подходящий к нему закрытый ключ прямо на этой странице. Пару ключей генерирует Web Crypto вашего браузера, и она не покидает ваш компьютер: ни введённые вами данные, ни ключ не уходят ни на наш сервер, ни на чужой.
По одному на строку. Первое становится ещё и общим именем.
Разумный выбор по умолчанию: по стойкости равен RSA 3072, а по размеру гораздо меньше.
Юридическое название вашей организации, как оно зарегистрировано.
Пишите полностью, без сокращений.
Две буквы — код ISO 3166-1.
Две буквы — код ISO 3166-1.
О чём попроситьПубличный CA задаёт это из собственного профиля. Частный CA может ждать, что вы это запросите.
Только если его запросил ваш CA. Его используют при подключении по SCEP; при заказе веб-сертификата он не нужен.
Пару ключей создаёт ваш браузер, и она никуда не отправляется.
Что вы собираетесь отправитьECDSA P-256 · SHA-256
Введите имя или попробуйте пример, и в этой колонке появится то, что центр сертификации сделал бы с запросом, ещё до его создания.
Пару ключей создаёт Web Crypto вашего браузера во фрейме, который никуда не может подключиться, и она нигде не отправляется. Откройте панель сети и понаблюдайте.
Что такое генератор CSR?
Он создаёт два файла: запрос на подписание сертификата, который нужно отправить в центр сертификации, и закрытый ключ, который остаётся у вас. В запросе — ваш открытый ключ и имена, которые вы хотите сертифицировать, а подписан он закрытым ключом.
Формат — PKCS#10, описанный в RFC 2986. Внутри запроса имя субъекта, ваш открытый ключ, набор атрибутов с альтернативными именами и подпись, сделанная вашим закрытым ключом поверх всего перечисленного. Эта самоподпись — доказательство владения ключом: она показывает, что отправитель держит ключ, на который будет выпущен сертификат.
Эти два файла не взаимозаменяемы. Запрос предназначен для отправки: в CA, в заявку в поддержку, куда угодно. Закрытый ключ — нет, никогда. На этой странице ключ создаётся и хранится в вашем браузере. Коду страницы всё равно приходится доверять, как и любому веб-инструменту, но проверить, что он отправляет, вы можете сами: откройте панель сети и понаблюдайте во время генерации.
Закрытый ключХраните это
-----BEGIN PRIVATE KEY------ Закрытая половинаСейчас подписывает запрос, а потом — каждое соединение с вашим сервером
- Её открытая половинаКопируется в запрос
Один экземпляр, на вашем компьютере
Запрос на подписание сертификатаОтправьте это
-----BEGIN CERTIFICATE REQUEST------ Имя субъекта108 байтДля большинства сертификатов не обязательно
- Ваш открытый ключ294 байтаЕдинственное поле, которое центр сертификации наверняка использует
- Запрошенные имена60 байтАльтернативные имена, переданные как атрибут
- Подпись261 байтСделана закрытым ключом поверх всего, что выше
Секретов в нём нет

ИменаИмена хостов, которые должен покрывать сертификат. Первое становится общим именем, остальные добавляются к нему.Ключ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 работает в вашем браузере, внутри изолированного фрейма, которому нельзя ни к чему подключаться, а окружающая страница видит только открытый ключ.
Эта страница
- Web Crypto создаёт пару ключей
crypto.subtle.generateKey - Ключ подписывает запрос
- Вы сохраняете оба файла
Ключ существовал только на вашем компьютере
Генератор, который создаёт ключ на своём сервере
- Ваши имена и данные уходят на сервер
- Сервер создаёт пару ключей
- Закрытый ключ присылают вам обратно
Скомпрометирован по определению ещё до установки
«Закрытый ключ считается скомпрометированным, если его значение стало известно постороннему лицу или постороннее лицо получило к нему доступ».
Это уже случалосьВ 2020 году один центр сертификации обнаружил 337 закрытых ключей, присланных вместе с запросамиВсе связанные сертификаты были отозваны
Как создать CSR
Введите имена хостов, выберите тип ключа и нажмите кнопку. Всё остальное необязательно: современный сертификат определяется альтернативными именами, а не субъектом.
Впишите в поле имён все имена, которые должен покрывать сертификат: example.com, www.example.com, wildcard вроде *.api.example.com или IP-адрес. Первое имя становится ещё и общим именем: если у сертификата вообще есть общее имя, Baseline Requirements требуют, чтобы оно в точности повторяло одно из альтернативных имён.
Страна, организация и город важны только для сертификата с проверкой организации (OV) или расширенной проверкой (EV), и даже тогда CA должен сам проверить их, прежде чем они попадут в сертификат. Для сертификата с проверкой домена — такой выпускает Let's Encrypt — правила допускают в субъекте только страну и общее имя. Генератор помечает два поля, которые публичный CA вычёркивает или запрещает, — организационное подразделение и адрес эл. почты, — а колонка рядом с формой показывает, что изменится.
Введите имена
Все хосты, которые должен покрывать сертификат; первое становится общим именемВыберите тип ключа
P-256, если только его не должно прочитать что-то староеСоздать запрос
Ваш браузер создаёт ключ и подписывает им запросЗаберите два файла
Отправьте запрос в центр сертификации; храните ключ
Какой тип ключа выбрать?
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 года. Генератор пишет об этом рядом с каждым вариантом, чтобы вы не узнавали об ограничении из письма с отказом.
| 112 бит | 128 бит | 192 бита | 256 бит | |
|---|---|---|---|---|
| RSA | 2048 | 3072 | 7680 | 15360 |
| RSA 4096 | 4096 | |||
| ECDSA | — | P-256 | P-384 | P-521 |
4096 бит: своей ступени нет Таблица переходит от одного размера сразу к следующему, так что лишняя работа на рукопожатие ничего письменно не даёт
Ed25519Ни один публичный центр сертификации не выпускает по нему сертификаты
ML-DSAПостквантовый: бюллетень, который разрешил бы его, закрыт без принятия в октябре 2026 года
- Одинаковая стойкость
- Предлагается здесь
- Есть в таблице, здесь не предлагается
- Принимает ли Let's EncryptLet's Encrypt
Что писать в каждом поле
Имена: все хосты, которые покрывает сертификат. Страна: две буквы. Организация: ваше юридическое название — для сертификата OV или EV. Всё остальное необязательно, а часть теперь запрещена.
Организационное подразделение запрещено. По бюллетеню SC047 CA/Browser Forum ни один публичный TLS-сертификат, выпущенный с 1 сентября 2022 г., не может содержать OU; CA уберёт его, а не откажет в заказе. Адрес эл. почты в субъекте тоже не допускается в сертификате с проверкой домена, а в остальных не рекомендуется. Этот генератор по-прежнему предлагает оба поля — для частных CA — и помечает их.
Страна — это код ISO 3166-1 alpha-2: US, DE, GB, IN, а не название страны и не три буквы. Регион или область лучше писать полностью, без сокращений. Для сертификата с расширенной проверкой нужны ещё юрисдикция регистрации и регистрационный номер — генератор их предлагает.
| В вашем запросе | DVПроверка домена | OVПроверка организации | EVРасширенная проверка |
|---|---|---|---|
Общее имяCN | |||
СтранаC | |||
ОрганизацияO | |||
Город, регион или областьL, ST | |||
Улица, почтовый индексstreet, postalCode | |||
Организационное подразделениеOUЗапрещено с 1 сентября 2022 г. | |||
Адрес эл. почтыemailAddress | |||
Регистрационный номер, категория бизнеса, юрисдикцияserialNumber, businessCategory, jurisdictionC |
- В сертификате — в том виде, как его проверил 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 году, повторно используемый ключ подписывал бы годами, через десятки продлений. Создать новый — вопрос секунды.
Один ключ, используется повторно
www.example.comapi.example.commail.example.com
3 сертификата отозваны в течение 24 часов
А ключ больше никогда не сертифицирует ни один CA, которому о нём сообщили
Новый ключ для каждого
www.example.comapi.example.comНе затронутыmail.example.comНе затронуты
1 сертификат отозван в течение 24 часов
Что происходит после отправки CSR
CA проверяет имена, большую часть остального игнорирует и присылает сертификат. Храните закрытый ключ: без него сертификат не установить.
Проверка касается имён, а не файла: запись DNS, файл на веб-сервере или письмо на адрес в этом домене. Когда она пройдена, сертификат приходит, а запрос больше не нужен: для установки, продления и отзыва он не требуется. Нужно хранить закрытый ключ, ведь без него сертификат бесполезен. Вставьте сертификат в декодер CSR и добавьте рядом закрытый ключ, чтобы убедиться, что они совпадают, прежде чем что-либо перезапускать.
Сертификат будет недолговечным. Публичный TLS-сертификат, выпущенный сегодня, не может действовать дольше 200 дней, с 15 марта 2027 г. — дольше 100, а с 15 марта 2029 г. — дольше 47. При таких сроках продление должно быть автоматическим, то есть через ACME, а клиент ACME создаёт запрос сам, так что эта страница нужна там, где клиент не справится: устройство, аппаратный комплекс, CA, который ждёт запрос, созданный вручную.
- Ваш компьютерВы отправляете запрос
- Центр сертификацииОн проверяет, что вы управляете каждым именемЗапись DNSФайл на веб-сервереПисьмо на адрес в этом домене
- Центр сертификацииОн подписывает сертификат и присылает его обратно
- Ваш компьютерВы устанавливаете его рядом с ключомПосле этого запрос больше не нужен
- 398 днейДействует сегодня
- 200 днейс 15 марта 2026 г.
- 100 днейс 15 марта 2027 г.
- 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 одинаково верны.
1openssl req -new 2-utf8 3-newkey ec 4-pkeyopt ec_paramgen_curve:prime256v1 5-nodes 6-keyout example.com.key 7-out example.com.csr 8-sha256 9-subj '/CN=example.com' 10-addext 'subjectAltName=DNS:example.com,DNS:www.example.com'
openssl req -newСоздать запрос на подписание сертификата-utf8Читать субъект как UTF-8, чтобы имя с диакритикой не пострадало-newkey…и вместе с ним новую пару ключей-pkeyoptНа кривой P-256-nodesОставить файл ключа незашифрованным (в OpenSSL 3.0 это пишется ещё и -noenc)-keyoutКуда записывается закрытый ключ-outКуда записывается запрос-sha256Хеш, которым подписывается запрос-subjСубъект, чтобы команда не задавала вопросов-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 бит больше не предлагаются. Ни один из этих способов не делает альтернативные имена простыми, поэтому команда нередко оказывается более простым путём.
certreqWindows Server и IIS
certreq читает обычный текстовый файл и пишет запросcertreq -new request.inf request.req[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Ваш Mac называет эти меню на своём языкеLet me specify key pair information
Тип и размер ключа спрятаны за этим флажкомRSA до 4096; короче 2048 больше не предлагаетсяБезопасен ли онлайн-генератор CSR?
Всё зависит от того, где создаётся ключ. Страница, которая создаёт его в вашем браузере, безопасна; страница, которая создаёт его на своём сервере, имела доступ к вашему закрытому ключу.
Проверка проста, и вы можете выполнить её сами: откройте панель сети в браузере, создайте запрос и понаблюдайте. Если ключ создаётся на странице, ни он, ни то, что вы вводили, никуда не уходит: здесь единственные запросы — за самой страницей и за двумя публичными списками имён, одинаковыми для всех посетителей. Если запрос уходит и приходит ключ, то этот ключ раньше существовал где-то ещё и по определению отрасли скомпрометирован ещё до установки.
Эта страница делает всю работу в браузере: пара ключей создаётся через crypto.subtle.generateKey внутри изолированного фрейма, которому нельзя ни к чему подключаться, страница собирает запрос вокруг открытого ключа, а фрейм один раз подписывает его закрытым ключом, который никогда его не покидает. Два файла появляются в вашем браузере и больше нигде. Если вы не хотите доверять этот процесс ни одной веб-странице, команда OpenSSL на этой странице делает то же самое на вашем компьютере — мы показываем её именно поэтому.
Эта страница
tlds.jsonСписок доменов верхнего уровня — одинаковый для всех посетителейsuffixes.jsonСписок публичных суффиксов — одинаковый для всех посетителейНи то, что вы ввели, ни ключ не покидают страницу
Генератор, который создаёт ключ на своём сервере
…/generateВаши имена и данные-----BEGIN PRIVATE KEY-----Закрытый ключ, созданный где-то ещёКлюч приходит по сети: значит, он раньше существовал где-то ещё
Генератор CSR: вопросы и ответы
Как создать CSR?
Безопасно ли создавать CSR онлайн?
Какой тип ключа выбрать?
Можно ли использовать ключ Ed25519 для публичного сертификата?
Для чего нужен файл закрытого ключа?
Нужно ли заполнять организацию и страну?
Почему поле организационного подразделения выдаёт предупреждение?
OU запрещено в публичном TLS-сертификате. По бюллетеню SC047 CA/Browser Forum ни один публичный TLS-сертификат, выпущенный с 1 сентября 2022 г., не может его содержать, поэтому центры сертификации убирают его из заказа, а не отклоняют заказ. Этот генератор по-прежнему предлагает поле — для частных CA — и сообщает, что с ним сделает публичный.Можно ли указать в одном CSR несколько доменов?
www, если он вам нужен. Можно смешивать wildcard и обычные имена и добавлять IP-адреса, хотя не каждый CA продаёт сертификаты на адрес.Можно ли использовать CSR или ключ для следующего сертификата повторно?
Что такое challenge password?
Подходит ли это для wildcard-сертификата?
*.example.com и добавьте ещё example.com, если нужно покрыть и сам домен: wildcard заменяет ровно одну метку и не совпадает с именем, под которым стоит. Звёздочка должна занимать всю крайнюю левую метку, и ни один CA не выпустит wildcard над публичным суффиксом, таким как *.co.uk.Что делать с файлами дальше?
Чего-то не хватает?Предложите функцию или новый инструмент
Похожие инструменты
Декодер CSR и сертификатов
Расшифровка CSR или SSL сертификата: субъект, SAN, размер ключа, срок действия, издатель, отпечаток, проверка подписи и соответствия CSR
Проверка SSL сертификата
Проверка действительности SSL сертификата и деталей безопасности
Генератор DKIM-записи
Создание пары ключей DKIM прямо в браузере и TXT-записи selector._domainkey для публикации
Генератор паролей
Надёжные случайные пароли, парольные фразы и PIN-коды в вашем браузере, с точными битами и временем взлома
Аудит DNS домена
Оценка DNS домена: делегирование, NS-серверы, SOA, DNSSEC и почта — 40 проверок
Генератор UUID
Генерация UUID v4, v7, v1, v5 и v3 или GUID пачкой в любом формате и декодирование версии и времени создания UUID
