XCA – создать сертификат, соответствующий требованиям жесткого отображения KB5014754

Вопрос или проблема

Я использую сертификаты, созданные в XCA, для авторизации пользователей eap-tls wifi в NPS.

Все работало до февраля, когда сервер обновился до KB5014754.

Теперь я перенастраиваю сертификаты, чтобы иметь новый OID 1.3.6.1.4.1.311.25.2 со значением SID контроллера домена пользователя. Я добавил новую строку X509v3 Subject Alternative Name:

otherName:ms-ntds-sec-ext;UTF8:S-1-5-56-3494754337-388234544-429167765-1670

X509v3 Subject Alternative Name выглядит так:

otherName:msUPN;UTF8:[email protected]
otherName:ms-ntds-sec-ext;UTF8:S-1-5-56-3494754337-388234544-429167765-1670

Это не работает. На контроллере домена в системном журнале событий появляется событие с Id 39 KDC ошибка.

Что я делаю не так?

1.3.6.1.4.1.311.25.2 не является подтипом OtherName – это тип расширения. SID имеет свое собственное расширение X.509v3, а не хранится как имя внутри расширения subjectAltName.

Расширение имеет аналогичную структуру с subjectAltName, но отличается из-за другого OID.

Вот как выглядит фактическая структура, согласно dumpasn1:

1223   51:         SEQUENCE {
1225    3:           OBJECT IDENTIFIER subjectAltName (2 5 29 17)
1230   44:           OCTET STRING, encapsulates {
1232   42:             SEQUENCE {
1234   40:               [0] {
1236   10:                 OBJECT IDENTIFIER
         :                   userPrincipalName (1 3 6 1 4 1 311 20 2 3)
1248   26:                 [0] {
1250   24:                   UTF8String '[email protected]'
         :                   }
         :                 }
         :               }
         :             }
         :           }
1276   77:         SEQUENCE {
1278    9:           OBJECT IDENTIFIER ntdsCASecurityExt (1 3 6 1 4 1 311 25 2)
1289   64:           OCTET STRING, encapsulates {
1291   62:             SEQUENCE {
1293   60:               [0] {
1295   10:                 OBJECT IDENTIFIER
         :                   ntdsObjectSID (1 3 6 1 4 1 311 25 2 1)
1307   46:                 [0] {
1309   44:                   OCTET STRING
         :                   'S-1-5-21-1376704245-510857609-3386413621-500'
         :                   }
         :                 }
         :               }
         :             }
         :           }

(Это тестовый сертификат, который я нашел на GitHub.)

Насколько я могу судить, XCA не поддерживает определение пользовательских расширений. Вам нужно будет использовать конфигурацию OpenSSL в ручном режиме (или настроить подчиненный CA в службах сертификатов AD).

С OpenSSL это может выглядеть примерно так (учтите, что я пишу это по памяти, поэтому синтаксис может быть полностью ошибочным в некоторых местах):

[extensions]
subjectAltName = blah
ms-ntds-sec-ext = ASN1:SEQUENCE:ntds_ext

[ntds_ext]
1 = IMP:0, SEQUENCE:ntds_sid

[ntds_sid]
type = OID:ntdsObjectSID
values = IMP:0, SEQUENCE:ntds_sid_value

[ntds_sid_value]
1 = OCTETSTRING:ASCII:S-1-2-345678

Ответ или решение

Для решения вашей задачи важно понять, что обновление Windows, описанное в патче KB5014754, изменило подход к сертификационной аутентификации. Это связано с тем, что новые требования к сертификатам теперь включают использование OID 1.3.6.1.4.1.311.25.2 для соответствия требованиям директивы, указанной в патче.

Теоретическая часть

В контексте использования сертификатов для аутентификации в сетях Wi-Fi с помощью EAP-TLS и NPS, сертификаты настраиваются для защиты передачи данных и подтверждения подлинности пользователей. После обновления KB5014754 сертификаты должны содержать специфическую расширенную структуру, которая включает SID (идентификатор безопасности) контроллера домена. Это OID используется не в качестве SubType внутри расширения subjectAltName, как это может показаться, а как самостоятельное расширение.

OID 1.3.6.1.4.1.311.25.2 представляет собой другое расширение, известное как ntdsCASecurityExt, который использует структуру X.509v3 для кодирования SID объекта. Это отличает его от стандартного subjectAltName.

Пример

Вы проводите генерацию сертификатов с использование XCA, однако XCA не поддерживает возможность добавить необработанные пользовательские расширения, что делает невозможным выполнение требований патча KB5014754 напрямую из XCA. Поэтому, вам потребуется использовать OpenSSL для создания таких сертификатов с необходимой структурой или обратиться к средствам Active Directory Certificate Services для создания подчиненного центра сертификации.

Практическое применение

Использование OpenSSL

Используя OpenSSL, можно создать сертификат с нужной конфигурацией следующим образом:

  1. Создайте конфигурационный файл OpenSSL. В этом файле вы должны определить нужные расширения и их содержание согласно необходимым спецификациям. Пример конфигурационного файла:
[extensions]
subjectAltName = blah
ms-ntds-sec-ext = ASN1:SEQUENCE:ntds_ext

[ntds_ext]
1 = IMP:0, SEQUENCE:ntds_sid

[ntds_sid]
type = OID:ntdsObjectSID
values = IMP:0, SEQUENCE:ntds_sid_value

[ntds_sid_value]
1 = OCTETSTRING:ASCII:S-1-5-21-1376704245-510857609-3386413621-500  # ваш SID
  1. Используйте данный конфигурационный файл при генерации сертификата с помощью команды OpenSSL, например:
openssl req -new -x509 -days 365 -key yourkey.key -out yourcertificate.pem -config yourconfig.cnf

Использование AD Certificate Services

Если OpenSSL представляется слишком сложным или неподходящим, вы можете задействовать AD Certificate Services. Это решение более управляемое в среде Windows и позволяет легче интегрировать новые требования патча.

  1. Настройте подчиненный центр сертификации, который бы учитывал требования OID 1.3.6.1.4.1.311.25.2 в процессе генерации сертификатов.

  2. Обратитесь к документации Microsoft для настройки специфических шаблонов сертификатов, учитывающих SID и расширение ntdsCASecurityExt.

Заключение

Правильная настройка сертификатов, учитывающих последние изменения в требованиях безопасности Microsoft, является необходимым элементом для поддержки повышенной безопасности в вашей сети. Используя OpenSSL или Active Directory Certificate Services, вы сможете соблюсти необходимые требования и обеспечить стабильное функционирование ваших систем после внедрения обновлений Windows. Точное понимание и применение изменений помогут вам избежать ошибок и обеспечить соответствие новым требованиям безопасности.

Оцените материал
Добавить комментарий

Капча загружается...