Декодер CSR

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

Декодируется в вашем браузере через Web Crypto · ничего не загружается на сервер и не сохраняется · Baseline Requirements CA/Browser Forum v2.3.1

Всё на этой странице происходит в вашем браузере. Откройте панель сети и понаблюдайте: ни один запрос не уносит ваши данные.

Что такое CSR?

Запрос на подписание сертификата (CSR) — небольшой подписанный файл, которым вы просите центр сертификации выпустить сертификат. В нём ваш открытый ключ, имена, которые вы хотите видеть в сертификате, и подпись, сделанная вашим закрытым ключом.

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

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

Один запрос, байт за байтомRFC 2986 · PKCS#10

Весь файл

  • Обёртка4 байта
  • Часть, которую подписывают469 байт
  • Какой алгоритм подписи15 байт
  • Сама подпись261 байт

Внутри части, которую подписывают

  1. Версия3 байтаВсегда ноль: единственная версия, которую определяет формат
  2. Имя субъекта108 байтУникальное имя, которое вы ввели в форму
  3. Ваш открытый ключ294 байтаАлгоритм, размер и сам ключ — единственное поле, которое центр сертификации точно использует
  4. Атрибуты60 байтЗдесь едут запрошенные вами альтернативные имена

Ваш закрытый ключподписывает часть вышеДоказательство того, что у вас есть парный закрытый ключ · Подпись охватывает только эту часть, а не весь файл

Пример запроса, который предлагает эта страница, — 749 байт. В подписываемую часть входят четыре вещи; закрытый ключ, парный открытому ключу внутри, подписывает ровно эту часть, и на выходе получаются последние 261 байт.
Результат декодера CSR: расшифрованный запрос с субъектом, ключом, альтернативными именами и проверкой правил CAРезультат декодера CSR: расшифрованный запрос с субъектом, ключом, альтернативными именами и проверкой правил CAВставьте или перетащитеCSR, сертификат или открытый ключ — PEM, base64, hex-дамп или файл. Можно сразу несколько.ВердиктЧто публичный CA сделает с этим запросом: выпустит, изменит или откажет — и почему именно.ИменаКаждое имя, которое будет покрывать сертификат, и проверка общего имени среди них.Ключ и подписьАлгоритм, размер, кривая и экспонента, а также держится ли собственная подпись запроса.Совпадение ключаДобавьте закрытый ключ или выпущенный сертификат, чтобы увидеть, относится ли он к этому запросу. Ни то, ни другое не покидает ваш браузер.
Запрос на подписание сертификата разобран по частям: вердикт, запрошенные имена, ключ за ним и место, где можно сверить собственный ключ. Выберите номер, чтобы увидеть, что показывает каждая часть.

Как проверить CSR перед отправкой

Стоит проверить три вещи: что имена — именно те, что вы имели в виду, что подпись подтверждается и что ничего в запросе не нарушает правило, которое применяет ваш CA.

Вставьте запрос выше. Страница читает subject атрибут за атрибутом, перечисляет каждое альтернативное имя субъекта, показывает алгоритм и размер ключа, а затем проверяет собственную подпись запроса. Если подпись запроса не подтверждается, значит, его отредактировали, обрезали или повредили после создания — лучше сформировать его заново, чем отправлять такой.

Дальше идут правила. Центр сертификации применяет Baseline Requirements CA/Browser Forum, и запрос, который нарушает одно из них, либо отклоняют, либо тихо меняют. Пункты на этой странице помечены как «Нужно исправить», если CA не может выпустить то, что вы просили, «Будет изменено», если сертификат всё равно выпустят, но вычеркнут или изменят поле, и «Стоит знать», если всё в порядке, но кое-что заслуживает внимания.

Три проверки, в порядке выполненияCA/Browser Forum TLS BR 2.3.1
  1. ИменаКаждое имя, которое покроет сертификат, и есть ли среди них общее имя
  2. ПодписьПроверяется собственной криптографией вашего браузера
  3. Правила центра сертификацииПрименяются по одному, каждое — со ссылкой на документ, откуда оно взято
  • ОтправляйтеНичто в запросе не нарушает правило
  • В нём откажутФайл исправен, но то, что он запрашивает, не разрешено
  • Сформируйте зановоНеподтверждающаяся подпись означает, что файл отредактировали, обрезали или неудачно скопировали после создания
Первые две проверки касаются самого файла, а третья — того, что разрешает центр сертификации. Запрос может пройти обе первые и всё равно получить отказ.

Что есть в CSR — и что на самом деле использует ваш CA

Из всего, что есть в CSR, публичный CA гарантированно использует одно поле — открытый ключ. Почти всё остальное он либо проверяет сам, либо переписывает, либо ему вообще запрещено копировать.

DigiCert прямо пишет об этом в своей документации: «DigiCert использует открытый ключ из CSR для создания вашего клиентского сертификата. Все остальные поля CSR игнорируются» [DigiCert uses the public key embedded in the CSR to create your client certificate. All other fields in the CSR are ignored]. В сертификате OV или EV CA сама обязана проверить организацию, населённый пункт и страну, прежде чем внести их; то, что вы ввели, на веру не принимается. Даты действия никогда не берутся из запроса: они следуют графику Baseline Requirements.

Два поля субъекта не просто игнорируются, а запрещены. organizationalUnitName (OU) не должно появляться в публичном TLS-сертификате — по бюллетеню SC047 CA/Browser Forum ни один сертификат, выпущенный начиная с 1 сентября 2022 г., не может его содержать, — а emailAddress вообще не допускается в сертификате с проверкой домена. Общее имя разрешено, но не рекомендуется, и если оно присутствует, обязано в точности повторять одно из альтернативных имён субъекта. Именно из-за этого правила страница отмечает общее имя, которого нет в списке SAN.

Что центр сертификации делает с каждым полемCA/Browser Forum TLS BR 2.3.1
В вашем запросеЧто с ним будетПочему
Открытый ключSubjectPublicKeyInfoИспользуется как естьЕдинственное, что центр сертификации точно у вас возьмёт
Альтернативные именаsubjectAltName2.5.29.17Используется как естьCA подтверждает, что вы контролируете каждое имя, прежде чем записать хоть одно из них
Общее имяCN2.5.4.3Проверяется, затем записывается самим CAНе рекомендуется; если присутствует, обязано в точности повторять одно из альтернативных имён
Организация, населённый пункт, регионO, L, ST2.5.4.10Проверяется, затем записывается самим CAВ сертификате с проверкой организации они берутся из собственных проверенных записей CA, а не из того, что вы ввели
СтранаC2.5.4.6Проверяется, затем записывается самим CAМожет присутствовать при любом уровне проверки
Организационное подразделениеOU2.5.4.11Не допускается вовсеЗапрещено в публичном сертификате с 1 сентября 2022 г.
Адрес электронной почтыemailAddress1.2.840.113549.1.9.1Не допускается вовсеНе допускается в сертификате с проверкой домена
Действителен с, действителен поnotBefore, notAfterНикогда не берётся из запросаЗадаётся графиком, которому следует центр сертификации, а не вашим запросом

«DigiCert использует встроенный в CSR открытый ключ для создания вашего клиентского сертификата. Все остальные поля CSR игнорируются».

DigiCert, из собственной документации
Поля, из-за которых все переживают, и что каждое из них на самом деле стоит. Ваш ключ и ваши имена сохранятся; подразделение (OU) не появится вовсе, а адрес электронной почты — в сертификате с проверкой домена, что бы вы ни ввели; а даты вы не задавали никогда.

Почему CA отклоняет CSR

Почти каждый отказ сводится к имени, которое CA не вправе сертифицировать, слишком широкому wildcard, зарезервированному IP-адресу, слишком маленькому ключу, устаревшему хешу подписи или запросу, чья подпись не подтверждается.

Центр сертификации не вправе выпускать сертификат для внутреннего имени — такого, которое «не заканчивается доменом верхнего уровня, зарегистрированным в корневой зоне IANA» [does not end with a Top-Level Domain registered in IANA's Root Zone Database]. Сюда попадают server.local, intranet, имя из одной метки без единой точки и любой придуманный суффикс. Метки могут состоять только из букв, цифр и дефисов, поэтому подчёркивание в имени хоста отклоняется, а имя нельзя записывать с точкой на конце. Wildcard может заменять только всю крайнюю левую метку целиком и никогда — публичный суффикс: *.example.com допустим, *.co.uk — нет. IP-адрес может присутствовать, но не зарезервированный — никаких 10.0.0.0/8, 192.168.0.0/16, 127.0.0.1 или fc00::/7.

С ключами Baseline Requirements точны: модуль RSA не менее 2048 бит, без остатка делящийся на 8, либо точка на P-256, P-384 или P-521, и «никакие другие алгоритмы или размеры ключей не допускаются» [no other algorithms or key sizes are permitted]. CA также обязан отклонить ключ, который можно разложить на множители, в том числе такой, «который раскладывается не более чем за 100 раундов методом факторизации Ферма» [which can be factored within 100 rounds using Fermat's factorization method], — эта страница прогоняет такую проверку для ключа в вашем запросе. И хотя хеш подписи самого CSR — не то же самое, что хеш подписи сертификата, Let's Encrypt перестал принимать самоподписи SHA-1 в 2022 году, поэтому старый инструмент, который всё ещё подписывает SHA-1, получит отказ.

Имена, которые центр сертификации не сертифицируетCA/Browser Forum TLS BR 2.3.1
  • server.local
    Внутреннее имяОно не заканчивается доменом верхнего уровня из публичной корневой зоны, поэтому никто не может доказать, что оно ваше
    Отказано
  • intranet
    Одна меткаИмя вообще без точки подпадает под то же определение
    Отказано
  • my_host.example.com
    ПодчёркиваниеМетка может состоять только из букв, цифр и дефисов — и ничего больше
    Отказано
  • *.co.uk
    Wildcard над целым реестромWildcard может заменять крайнюю левую метку, но никогда — публичный суффикс
    Отказано
  • 192.168.1.10
    Зарезервированный адресПубличный адрес можно сертифицировать; адрес из частного или специального диапазона — никогда
    Отказано
  • example.com.
    Точка на концеПустую метку корня нельзя выписывать явно
    Отказано
Шесть имён, и каждое нарушает своё правило — любой из этих отказов можно было предвидеть ещё до отправки запроса.

Как узнать, что мой закрытый ключ подходит к моему CSR?

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

Откройте «Сравнить с ключом или сертификатом» выше и добавьте ключ рядом с запросом. Страница читает из файла только открытую половину — понимает ключи PKCS#8, PKCS#1 и SEC1 — сравнивает её с ключом в запросе и даёт ответ. Ничего не загружается на сервер, ничего не сохраняется, и ключ стирается, как только вы покидаете поле. Та же проверка работает между запросом и сертификатом, полученным от CA, — так можно поймать «сертификат и закрытый ключ не совпадают» до того, как сервер откажется запускаться.

Если вы не хотите вставлять ключ ни на одну веб-страницу, тот же ответ дают две команды на вашей собственной машине. openssl req -in request.csr -pubkey -noout выводит открытый ключ из запроса, а openssl pkey -in private.key -pubout — из ключа: одинаковый вывод означает совпадение. Старый вариант с -modulus работает только для ключей RSA; -pubkey — для любого типа ключа.

Два файла, одно сравнениеRFC 2986 · OpenSSL manual
Ваш браузер
  • Файл закрытого ключаФайл, который нельзя отправлять никудаИз него читается открытая половина
  • ЗапросФайл, который вы отправляете в центр сертификацииОн уже несёт в себе открытый ключ

Это один и тот же ключ?

  • СовпадаютСертификат, который придёт в ответ, установится с этим ключом
  • Не совпадаютИменно это несовпадение сообщает веб-сервер, когда отказывается запускаться

Через эту границу ничего не проходит · Сравнение работает и при выключенной сетиГде угодно ещё

Или сделайте это на своей машинеopenssl req -in request.csr -pubkey -nooutopenssl pkey -in private.key -puboutОдинаковый вывод означает совпадение
Файл закрытого ключа уже несёт в себе собственный открытый ключ, поэтому вопрос решается сравнением двух открытых ключей. Секрету для этого никуда переезжать не нужно — он и не переезжает.

CSR, сертификат, закрытый ключ: в чём разница?

Закрытый ключ — это секрет. CSR — запрос, который доказывает, что он у вас есть. Сертификат — подписанный ответ CA, и из всех трёх только он публичен по своей природе.

Все три файла часто лежат в одной папке и называются до обидного похоже. Закрытый ключ начинается с -----BEGIN PRIVATE KEY----- или -----BEGIN RSA PRIVATE KEY----- и не должен попадать никому, включая центр сертификации. Запрос на подписание сертификата начинается с -----BEGIN CERTIFICATE REQUEST-----, подписан этим ключом, и его безопасно отправлять. Сертификат начинается с -----BEGIN CERTIFICATE-----, подписан центром сертификации и в любом случае отправляется каждому посетителю вашего сайта.

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

Три файла, одна папка, до обидного похожие именаRFC 7468
  • Закрытый ключСекрет

    Первая строка-----BEGIN PRIVATE KEY-----Также часто встречаются-----BEGIN RSA PRIVATE KEY-----

    Подписан кем
    Ничем — это он сам подписывает
    Кто может его увидеть
    Только вы и никто больше
    Для чего он нужен
    Доказывает, что этот сервер — именно тот, для которого выпущен сертификат
  • Запрос на подписание сертификатаПубличный

    Первая строка-----BEGIN CERTIFICATE REQUEST-----Также часто встречаются-----BEGIN NEW CERTIFICATE REQUEST-----

    Подписан кем
    Сам собой, закрытым ключом
    Кто может его увидеть
    Вы и центр сертификации
    Для чего он нужен
    Запрашивает сертификат и доказывает, что у вас есть ключ, для которого он выпускается
  • СертификатПубличный

    Первая строка-----BEGIN CERTIFICATE-----

    Подписан кем
    Центром сертификации
    Кто может его увидеть
    Каждый посетитель вашего сайта
    Для чего он нужен
    Говорит браузеру, что этот ключ принадлежит этим именам

.csr.pem.req.txtНи один стандарт не закрепляет за запросом расширение файла; в ходу все перечисленные, и эта страница читает содержимое, а не имя

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

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

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

Всё на этой странице работает в вашем браузере. Запрос разбирает код, загруженный вместе со страницей, подпись проверяет собственный Web Crypto вашего браузера, и ни один запрос с вашими данными никуда не уходит — понаблюдайте за панелью сети, пока пользуетесь страницей. Это свойство того, как страница устроена, а не обещание, которое мы просим принять на веру.

Важно это из-за файла, что лежит рядом с CSR. Собственное определение 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 закрытых ключей, которые клиенты вставили вместе со своими CSR, и отозвал все связанные с ними сертификаты, написав, что «отправив закрытый ключ в DigiCert вместе с CSR, клиент скомпрометировал этот ключ» [by sending the private key to DigiCert along with the CSR, the customer has compromised the private key]. Если эта страница когда-нибудь прочитает вставленный вами закрытый ключ, она так и скажет, откажется его декодировать и ничего из него не сохранит.

Куда файл попадает на самом делеCA/Browser Forum TLS BR 2.3.1

Эта страница

Ваш браузер
  1. Файл читается
  2. Его разбирает код, пришедший вместе со страницей
  3. Подпись проверяет сам браузер
  4. Результат отображается

Ни один запрос с вашими данными никуда не уходитОткройте панель сети и понаблюдайте, пока пользуетесь страницей

Страница, которая его загружает на сервер

Ваш браузер

Файл загружается на сервер…вместе со всем, что было вставлено рядом с ним

Чужой сервер

Закрытый ключ, попавший туда, скомпрометирован уже одним этим

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

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

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

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

RSA или ECDSA: какой ключ выбрать для CSR?

Ключ ECDSA P-256 по стойкости равен RSA на 3072 бита, но гораздо компактнее, поэтому он лучше подходит по умолчанию. RSA 2048 по-прежнему принимают повсеместно.

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

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

Одна и та же стойкость при двух очень разных размерахNIST SP 800-57 Part 1 Rev 5, Table 2
СтойкостьКлюч RSAКривая
112 бит стойкости2 048 битЛюбой публичный CAНа этом уровне стойкости нет ни одной кривой, которую допускает публичный центр сертификации
128 бит стойкости3 072 битаЛюбой публичный CAP-256Любой публичный CA
4 096 битЛюбой публичный CA4 096 бит в таблице вообще нет
192 бита стойкости7 680 битЛюбой публичный CAP-384Любой публичный CA
256 бит стойкости15 360 битЛюбой публичный CAP-521Любой публичный CA
  • Ключ RSA
  • Кривая
  • Ступени идут от одного размера сразу к следующему, минуя популярный промежуточный, так что лишняя работа при рукопожатии, которую он стоит каждому посетителю, не покупает ничего задокументированного
  • ПринимаетLet's Encrypt

Кривая даёт ту же стойкость в разы меньшим числом байт

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

Как создать CSR на любой платформе

Одна команда OpenSSL покрывает Linux, macOS и Windows с установленным OpenSSL. В IIS есть certreq, в macOS — Keychain Access, а на этом сайте есть генератор, который никуда не отправляет ваш ключ.

В OpenSSL команда openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com,DNS:www.example.com" создаёт ключ и запрос одним шагом (-nodes оставляет ключ незашифрованным. В OpenSSL 3 это можно написать и как -noenc, но встроенный в macOS LibreSSL знает только -nodes). Затем openssl req -in example.com.csr -text -verify -noout показывает его и проверяет. В Windows certreq -new request.inf request.req читает файл .inf, где альтернативные имена идут под OID 2.5.29.17 строками _continue_ — ключа SAN= там нет. Собственная справочная страница Microsoft предупреждает, что в её примере используется SHA-1, который CA теперь отклонит, так что хеш нужно задать самостоятельно.

На Mac создать его можно через Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority, а размер ключа спрятан за флажком «Let me specify key pair information». Либо воспользуйтесь нашим генератором CSR: он делает ключ через Web Crypto вашего браузера и отдаёт вам оба файла, даже не касаясь сервера. Ни один стандарт не закрепляет за CSR расширение файла: в ходу .csr, .pem, .req и .txt, и эта страница читает содержимое, а не полагается на имя файла.

Четыре способа создать егоOpenSSL · Microsoft Learn · Apple Support
  1. OpenSSLLinux, macOS, Windows

    Создаёт ключ и запрос одной командойopenssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com,DNS:www.example.com"Затем прочитайте его и проверьте собственную подписьopenssl req -in example.com.csr -text -verify -noout
  2. certreqWindows Server и IIS

    Читает обычный текстовый файл; альтернативные имена идут в разделе расширений, по одной строке на каждоеcertreq -new request.inf request.req[Extensions] 2.5.29.17 = "{text}" _continue_ = "DNS=example.com&" _continue_ = "DNS=www.example.com"Собственная страница с примером от Microsoft всё ещё построена вокруг хеша, который центр сертификации теперь отклоняет, так что задайте хеш сами
  3. Keychain AccessmacOS

    Keychain Access › Certificate Assistant › Request a Certificate From a Certificate AuthorityНа вашем Mac эти меню называются на языке системыТип и размер ключа спрятаны за флажком, который позволяет задать параметры пары ключейКлючи RSA от 2048 до 4096 бит; меньшие больше не предлагаются
  4. DNS RobotЛюбой браузер

    Создаёт ключ средствами криптографии вашего браузера и отдаёт вам оба файла, даже не касаясь сервераОткрыть генератор
Одна команда OpenSSL работает и в Linux, и в macOS, и в Windows. Остальные три способа — для машин, где её нет под рукой.

Сколько будет действовать сертификат?

Публичный TLS-сертификат, выпущенный сегодня, не может действовать дольше 200 дней. В марте 2027 года этот предел упадёт до 100 дней, а в марте 2029 года — до 47.

График задан бюллетенем SC-081v3 CA/Browser Forum, принятым в апреле 2025 года, и CSR на него никак не влияет: срок действия никогда не берётся из запроса. На каждом этапе — два числа, SHOULD NOT на день меньше, чем MUST NOT: сегодня это 199 и 200, с 15.03.2027 — 99 и 100, с 15.03.2029 — 46 и 47. Для подсчёта «сутки считаются равными 86 400 секундам» [a day is measured as 86,400 seconds], и любая часть следующих суток засчитывается как целые сутки.

Практическое следствие — продление обязано быть автоматическим. Если вы до сих пор создаёте CSR вручную раз в год, самое время перейти на ACME, где запрос формирует клиент за вас, — и где, кстати, PKCS#10 действительно обязателен, хотя сами Baseline Requirements требуют лишь «запрос на сертификат в форме, предписанной центром сертификации» [a certificate request in a form prescribed by the CA].

Сколько может действовать сертификатCA/Browser Forum TLS BR 2.3.1 §6.3.2
  1. до 15 марта 2026 г.Где находится сегодняшний день397 дней398 дней
  2. с 15 марта 2026 г.199 дней200 дней
  3. с 15 марта 2027 г.99 дней100 дней
  4. с 15 марта 2029 г.46 дней47 дней
  • Весь график задан одним бюллетенем — SC-081v3, принятым 11 апреля 2025 г.
  • Сутки считаются равными ровно 86 400 секундам и любая часть следующих суток засчитывается как целые сутки
  • Ничего в запросе этого не меняет
Четыре ступени, и на каждой — два числа: то, что правила не рекомендуют, и то, что запрещают. Даты уже зафиксированы, и поэтому автоматическое продление — единственный рабочий ответ.

Что показывает необработанный ASN.1

Под base64 CSR — это дерево, закодированное в DER. Декодер рисует его со смещениями в байтах и называет каждый известный ему идентификатор объекта — то же самое выводит openssl asn1parse.

Это честный способ показать поле, для которого ни у кого нет человеческого названия. Откройте «Необработанная структура» у любого декодированного элемента — и вы увидите CertificationRequestInfo, относительные уникальные имена субъекта одно за другим, SubjectPublicKeyInfo, набор attributes [0] и внутри него атрибут extensionRequest — идентификатор объекта 1.2.840.113549.1.9.14, определённый не в RFC 2986, а в RFC 2985 §5.4.2, — несущий те самые расширения X.509 из RFC 5280.

Другой атрибут, который там можно встретить, — challengePassword (1.2.840.113549.1.9.7). Он задумывался как общий секрет для будущего отзыва сертификата, всё ещё используется при подключении по SCEP и не играет никакой роли в обычном заказе веб-сертификата. Эта страница показывает его, если он есть, — потому что поле, которого не видно, невозможно проверить.

Тот же запрос, в байтахRFC 2986 · RFC 2985 · RFC 5280
На байтеСтруктураРазмер
0SEQUENCE749 байт
4SEQUENCE469 байт
8INTEGER03 байта
11SEQUENCE108 байт
13SET13 байт
15SEQUENCE11 байт
17OBJECT IDENTIFIERC2.5.4.65 байт
22PrintableStringUS4 байта
26SET21 байт
28SEQUENCE19 байт
30OBJECT IDENTIFIERST2.5.4.85 байт
35UTF8StringCalifornia12 байт
47SET24 байта
49SEQUENCE22 байта
51OBJECT IDENTIFIERL2.5.4.75 байт
56UTF8StringSan Francisco15 байт
71SET22 байта
73SEQUENCE20 байт
75OBJECT IDENTIFIERO2.5.4.105 байт
80UTF8StringExample Inc13 байт
93SET26 байт
95SEQUENCE24 байта
97OBJECT IDENTIFIERCN2.5.4.35 байт
102UTF8Stringwww.example.com17 байт
119SEQUENCE294 байта
123SEQUENCE15 байт
125OBJECT IDENTIFIERrsaEncryption1.2.840.113549.1.1.111 байт
136NULL2 байта
138BIT STRING2 160 бит30 82 01 0a 02 82 01 01 00 c5 47 47 1d 26 1c bf275 байт
413[0]60 байт
415SEQUENCE58 байт
417OBJECT IDENTIFIERextensionRequest1.2.840.113549.1.9.1411 байт
428SET45 байт
430SEQUENCE43 байта
432SEQUENCE41 байт
434OBJECT IDENTIFIERSubject Alternative Name2.5.29.175 байт
439OCTET STRING32 байта30 1e 82 0f 77 77 77 2e 65 78 61 6d 70 6c 65 2e34 байта
473SEQUENCE15 байт
475OBJECT IDENTIFIERsha256WithRSAEncryption1.2.840.113549.1.1.1111 байт
486NULL2 байта
488BIT STRING2 048 бит00 57 41 c5 09 98 14 78 8c ee c3 61 d4 c0 e0 2d261 байт
  • Содержит другие элементы
  • Содержит значение
  • Назван по своей позиции
  • Атрибут, который несёт расширения

    1.2.840.113549.1.9.14Он определён не в том документе, который определяет сам запрос, — поэтому альтернативные имена едут внутри атрибута, а не располагаются рядом с субъектом
  • Другой атрибут, который можно встретитьОтсутствует в этом запросе

    1.2.840.113549.1.9.7Общий секрет, предназначенный для будущего запроса на отзыв сертификата, всё ещё используемый, когда устройство самостоятельно подключается к сети
Каждый байт примера запроса с названием каждого идентификатора объекта. Это то же, что выводит консольный декодер, только не напечатано, а нарисовано, — чтобы было видно, где кончается одно поле и начинается следующее.

Декодер CSR: вопросы и ответы

Как декодировать CSR?

Вставьте весь запрос в поле выше, включая строки -----BEGIN CERTIFICATE REQUEST----- и -----END CERTIFICATE REQUEST-----, или перетащите файл на страницу. Декодирование идёт по мере вставки: субъект, открытый ключ, каждое альтернативное имя субъекта, каждое запрошенное расширение и отпечатки. Можно также вставить отдельно тело в base64, hex-дамп или загрузить бинарный файл DER.

Безопасно ли пользоваться этим декодером CSR?

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

Как проверить, действителен ли мой CSR?

Декодируйте его здесь и прочитайте вердикт. Страница проверяет собственную подпись запроса, которая доказывает, что у отправителя есть соответствующий закрытый ключ, а затем применяет правила, которые использует публичный центр сертификации: имена, которые он не вправе сертифицировать, слишком широкие wildcard, зарезервированные IP-адреса, слишком маленькие или раскладываемые на множители ключи, запрещённые поля субъекта и устаревшие хеши подписи. Каждый пункт говорит, откажет ли CA, изменит или просто пропустит мимо.

Почему мой центр сертификации отклоняет CSR?

Частые причины — внутреннее имя вроде server.local или имя хоста из одной метки, подчёркивание в имени хоста, wildcard над публичным суффиксом вроде *.co.uk, частный IP-адрес среди альтернативных имён, ключ RSA короче 2048 бит или запрос, всё ещё подписанный SHA-1. Декодируйте запрос выше — и каждая из этих причин будет названа прямо, вместе с правилом, которое она нарушает.

Как узнать, что мой закрытый ключ подходит к моему CSR?

Используйте «Сравнить с ключом или сертификатом» выше: добавьте ключ рядом с запросом, и страница в вашем браузере сравнит открытый ключ из файла ключа с тем, что в запросе. Либо проверьте сами — openssl req -in request.csr -pubkey -noout и openssl pkey -in private.key -pubout выводят один и тот же открытый ключ, если они совпадают. То же сравнение работает между ключом и уже выпущенным сертификатом.

Можно ли этим декодировать и SSL-сертификат?

Да. Вставьте сертификат — и он декодируется как сертификат: издатель и субъект, серийный номер, даты действия, каждое альтернативное имя, назначение ключа и расширенное назначение ключа, идентификаторы ключа издателя и субъекта, адреса OCSP и CA Issuers, политики сертификата и любые встроенные метки времени Certificate Transparency. Вставьте сертификат вместе с его запросом — и страница ещё скажет, общий ли у них ключ.

Какие поля из моего CSR на самом деле использует центр сертификации?

Гарантированно одно — открытый ключ. Собственная документация DigiCert говорит, что остальное игнорируется. В сертификате OV или EV CA сама обязана проверить организацию и страну, прежде чем внести их; даты действия всегда берутся из графика Baseline Requirements, а не из запроса. Два поля не просто игнорируются, а запрещены в публичном TLS-сертификате: OU и, в сертификатах с проверкой домена, emailAddress.

Имеет ли общее имя значение до сих пор?

Только как копия чего-то ещё. Браузеры не используют общее имя для сверки хоста с 2017 года и полагаются исключительно на альтернативные имена субъекта. Baseline Requirements помечают общее имя как NOT RECOMMENDED и требуют, чтобы, если оно присутствует, оно «должно содержать ровно одно значение из тех, что указаны в расширении subjectAltName сертификата» [MUST contain exactly one entry that is one of the values contained in the Certificate's subjectAltName extension]. Общее имя, которого нет среди ваших альтернативных имён, — это отказ, и страница его отмечает.

Можно ли декодировать несколько файлов сразу?

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

Что такое challenge password в CSR?

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

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

Сегодня нет. Baseline Requirements допускают RSA и кривые P-256, P-384 и P-521, а затем указывают, что «никакие другие алгоритмы или размеры ключей не допускаются» [no other algorithms or key sizes are permitted], поэтому ни один публичный центр сертификации не выпустит сертификат по запросу Ed25519. Это хороший ключ для SSH, для подписи и для частного CA, и этот декодер без проблем читает запросы Ed25519 и Ed448, а также постквантовые ключи ML-DSA.

Сколько сейчас действителен сертификат?

Публичный TLS-сертификат, выпущенный сегодня, не может действовать дольше 200 дней — раньше, до 15.03.2026, было 398. 15.03.2027 предел упадёт до 100 дней, а 15.03.2029 — до 47, согласно бюллетеню SC-081v3 CA/Browser Forum. Ничего в CSR на это не влияет: срок действия задаёт CA. При таких сроках продление обязано быть автоматическим, а на практике это означает ACME.

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