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

Я недавно начал настраивать CA с OpenSSL. Корневой ЦС требует, чтобы сертификаты промежуточного ЦС имели поле OU таким образом, чтобы DN промежуточного ЦС было похоже на OU=group,

С этим промежуточным CA я определил политику для CSR, которую он может подписать следующим образом:

[ policy_match ] organizationUnitName=match

У CSR, которые я пытаюсь подписать, есть DN вроде OU=group, OU=subgroup, но команда openssl ca -in two_OUs.csr выплевывает ошибку: The organizationalUnitName field needed to be the same in the CA certificate (group) and the request (subgroup),

Я попытался изменить политику двумя способами:

[ policy_match ] organizationUnitName=match organizationUnitName=supplied

[ policy_match ] 0.organizationUnitName=match 1.organizationUnitName=supplied

Первое успешно, но не требует наличия двух OU. Второй терпит неудачу, жалуясь на 0.organizationalUnitName:unknown object type in 'policy' configuration

Если не считать обход ca командовать все вместе в пользу x509 команда, как я могу решить это?

1 ответ

Вы не можете напрямую проверить это. openssl ca логика политики может проверять только одно вхождение атрибута (точнее, AVA в RDN) для данного OID. Из-за того, что я прочитал код, фактически не переходя через него, я думаю, что он должен проверить первый, тогда как он, похоже, является последним по значению, которое вы опубликовали; вы отправляете значения из чего-то, что использует соглашение LDAP для отображения DN "назад"?

И чтобы быть ясным, вы не просто говорите, что DN содержит два OU в этом порядке, но что он полностью состоит из них, без O (OrganizationName)? Если это так, то это, кажется, нарушает правило X.520, как я отметил в своем комментарии к вашему Q - хотя AFAICS это правило не переносится в PKIX или даже LDAP, и, конечно, оно не применяется OpenSSL.

Если вы хотите применить свое правило, проверяя значения обоих OU, вам нужно сделать это вне OpenSSL, например, отображая информацию запроса с openssl req и проверка его с помощью другой программы (возможно, программы обработки текста, такой как awk или perl).

Вы можете использовать openssl ca выдать сертификат для имени с повторяющимися атрибутами, такими как это (также атрибуты вне политики), используя -preserveDN вариант или preserve=y настройка конфига. Это делает то же самое x509 -req -CA* делает по умолчанию.

Другие вопросы по тегам