Как использовать политику 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*
делает по умолчанию.