Где стандартизированы атрибуты для файла конфигурации CSR в OpenSSL? - PullRequest
0 голосов
/ 21 сентября 2019

В Интернете существует множество примеров того, как могут выглядеть файлы конфигурации OpenSSL CSR, но я еще не сталкивался с тем, где спецификации / атрибуты фактически стандартизированы / объявлены.

1 Ответ

1 голос
/ 21 сентября 2019

Мета: на самом деле это не вопрос программирования / разработки и, вероятно, он относится к ошибке сервера или, возможно, к суперпользователю.

Существует четыре типа конфигурации, используемые openssl req для генерации CSR:

  • параметры или настройки, которые управляют работой самой команды req, например размер ключа по умолчанию для генерирования (для RSA) или файл ключа для записи, и хэш, используемый при подписании

  • значения, входящие в тему «Отличительное имя»; обычно запрашивается пользователем / терминалом, но может быть жестко закодирован или переопределен с помощью опции -subj

  • 'attribute' (напрямую) в CSRсм. rfc2986 , который использует тот же синтаксис, что и DN, и может быть запрошен или жестко задан

  • запрошенные расширения;все они фактически инкапсулированы в один атрибут с OID 1.2.840.113549.1.9.14, но поскольку они соответствуют расширениям в сертификате или CRL (где они , а не в атрибуте) OpenSSL конфигурирует их отдельно

Справочная страница для req или в новых версиях, возможно openssl-req в вашей системе или в Интернете (другие выпуски, связанные ссправа) описывает первую группу в заголовке ФОРМАТ ФАЙЛА КОНФИГУРАЦИИ и синтаксис для второй и третьей групп в ФОРМАТЕ РАЗДЕЛЕНИЕ ИМЕНИ И АТРИБУТА.

Как компоненты DistinguishedName (иначе DN, X501Name и т. Д., Которые сами называются атрибутами), так и атрибуты (если таковые имеются) CSR идентифицируются идентификаторами объектов ASN.1, то есть OID, что делает их в принципепроизвольно расширяемые, как и значения расширения (подробнее см. ниже).На практике для DN обычно используется только несколько или два OID, и поскольку CSR обычно используется для получения сертификата X.509 (или PKIX), и этот сертификат часто используется для взаимодействия с другими программами или системой (s) вы обычно не хотите использовать OID, которые не будут правильно поняты программой (ами) или системами, с которыми вы захотите или возможно захотите взаимодействовать.Обычно атрибуты , кроме extensionRequest , вообще не используются, но когда они используются, они обрабатываются ЦС и обычно не входят в сертификат и, следовательно, не имеют значения для взаимодействия.

OID, обычно используемые в PKIX * ​​1047 * сертификатах для Subject DN, определены в rfc5280, раздел 4.1.2.6 , частично в соответствии с определением для эмитента в , раздел 4.1..2.4 с указанием OID в модуле ASN.1 в приложении A .Конечно, PKIX - не единственная область, в которой используются сертификаты X.509, и вы можете использовать OpenSSL для поддержки некоторых других областей приложений, которые имеют разные стандарты именования.

Существует более десятка расширенных OID, которые обычно используются, и, вероятно, не менее ста используются в специализированных областях, но большинство из них внесены в сертификат CA и не могут быть запрошены;есть, вероятно, только несколько, которые могут быть полезны в CSR.Расширения, поддерживаемые OpenSSL, для как CSR, так и сертификатов, определены на справочной странице для x509v3_config (как указано на странице req вreq_extensions) вместе со ссылкой на синтаксис для определения «произвольных» расширений - тех, которые еще не были закодированы в OpenSSL.Для произвольных расширений, и, возможно, даже для поддерживаемых, вы можете захотеть определить новые именованные OID, а не повторять неудобные и немонимические числовые формы;это описано в справочной странице для config.

Расширения, обычно используемые в PKIX-сертификатах , определены в rfc 5280, раздел 4.2 но опять же сертификаты не-PKIX могут отличаться, и, как отмечалось, большинство расширений сертификатов не имеют смысла в CSR.

Также обратите внимание, что команда req с параметром -x509 создает сертификат, а НЕ CSR;в этом случае используется конфигурация для Subject DN и Extensions (фактические расширения не запрошены), но атрибуты - нет, а для управления самой командой используются разные настройки, например время действия.

...