Настройка шаблонов сертификатов для ML-DSA

В этой статье описывается, как настроить шаблоны сертификатов служб сертификатов Active Directory (AD CS) для использования алгоритма цифровых подписей (ML-DSA) модуляLattice-Based в качестве алгоритма открытого ключа. После настройки шаблонов сертификатов пользователи и компьютеры с соответствующими разрешениями могут регистрироваться для ML-DSA сертификатов.

ML-DSA — это алгоритм только подписи и не поддерживает операции шифрования. Это ограничение означает, что необходимо настроить шаблон сертификата для подписывания, а расширения политики приложений (EKU) и расширения использования ключей не должны включать параметры шифрования.

Необходимые условия

  • Корневой ЦС и подчиненный ЦС, настроенные с помощью ML-DSA. См. статью "Настройка центра сертификации для использования ML-DSA".
  • Членство в администраторах домена или эквивалентно управлению шаблонами сертификатов.
  • Доступ к консоли шаблонов сертификатов на компьютере с установленными средствами управления CS AD.
  • Для тестирования регистрации клиента: клиент, присоединённый к домену и работающий под управлением Windows 11 версии 24H2 или 25H2, с установленным не связанным с безопасностью обновлением за 2025-10 (KB5067036) или более поздним.

Проверка требований к шаблону ML-DSA

Шаблон сертификата должен соответствовать двум требованиям для поддержки ML-DSA в качестве алгоритма открытого ключа:

  • Поставщик CNG API криптографии: нового поколения: укажите в качестве поставщика не устаревший поставщик криптографических служб (CSP), например поставщик хранилища ключей. Алгоритмы шифрования после квантовых вычислений (PQC), такие как ML-DSA, поддерживаются только поставщиками CNG.
  • Назначение подписи: задайте назначение в разделе "Обработка запросов " для подписи. ML-DSA поддерживает только операции подписывания, а не шифрование.

Чтобы поставщики CNG были доступны в шаблоне, установите для параметров совместимости Certification Authority и Certificate recipient значение не ниже Windows Server 2008.

Встроенные шаблоны, совместимые с ML-DSA

Следующие встроенные шаблоны имеют параметр Purpose со значением Подпись по умолчанию. В результате ML-DSA алгоритмы доступны после задания поставщика хранилища ключей на вкладке шифрования .

  • Только подпись пользователя
  • Сеанс с проверкой подлинности
  • Подписывание кода
  • Подписывание списка доверия
  • Агент регистрации
  • Только подпись Exchange
  • Агент регистрации Exchange (оффлайн запрос)
  • Агент регистрации (компьютер)
  • Корневой центр сертификации
  • Подчиненный центр сертификации
  • Центр перекрёстной сертификации
  • Подпись ответа OCSP

Чтобы использовать любой другой шаблон, перед настройкой ML-DSA измените значение Purpose на Signature на вкладке Request Handling.

Совместимость расширений

При настройке шаблонов для ML-DSA также убедитесь, что следующие расширения совместимы:

  • Политики приложений (EKU): не включают OID, связанные с шифрованием, такие как шифрование файловой системы или безопасная электронная почта.
  • Использование ключей. Не включайте такие параметры шифрования, как разрешить обмен ключами только с шифрованием ключей.

Настройка шаблона подписывания кода с помощью ML-DSA

Чтобы создать шаблон для подписи кода ML-DSA, дублируйте встроенный шаблон Code Signing. Во встроенном шаблоне по умолчанию задан параметр совместимости Windows Server 2003, который не поддерживает поставщиков CNG. Повторяющийся шаблон позволяет обновить параметры совместимости, чтобы ML-DSA алгоритмы стали доступными.

  1. Откройте консоль шаблонов сертификатов . Щелкните правой кнопкой мыши шаблон Code Signing, а затем выберите "Создать копию шаблона".

  2. На вкладке Совместимость:

    • Укажите для Certification Authority значение Windows Server 2008 или более позднюю версию.
    • Установите для Certificate recipient значение Windows Vista / Server 2008 или более позднюю версию.
  3. На вкладке "Общие " введите отображаемое имя шаблона (например, подпись кода PQC) и настройте срок действия и период продления по мере необходимости.

  4. На вкладке "Обработка запросов " убедитесь, что назначение имеет значение "Подпись".

  5. На вкладке криптографии :

    • Задайте для категории поставщика значение Поставщик хранилища ключей.
    • Задайте имя алгоритма для набора параметров ML-DSA (например, ML-DSA:44). Минимальный размер ключа и хэш-поля запроса обновляются автоматически.

    Снимок экрана: вкладка

    На завершенной вкладке "Криптография" шаблона подписывания кода отображается выбранный набор параметров ML-DSA с минимальным размером ключа и полями хэш-запросов , заполненными автоматически.

    Снимок экрана вкладки

  6. На вкладке "Безопасность" предоставьте разрешения на регистрацию и автоматическую регистрацию соответствующим пользователям или группам.

  7. Нажмите кнопку ОК, чтобы сохранить шаблон.

  8. В консоли Центр сертификации на выдающем ЦС щелкните правой кнопкой мыши по Шаблоны сертификатов, выберите Создать>Шаблон сертификата для выдачи, а затем выберите созданный вами шаблон.

После публикации шаблона см. статью "Регистрация для сертификата ML-DSA ", чтобы запросить сертификат.

Настройка шаблона сертификата TLS с помощью ML-DSA

Настройте шаблон сертификата TLS ML-DSA путем дублирования встроенного шаблона веб-сервера . Так как шаблон веб-сервера по умолчанию использует подпись и шифрование в качестве назначения, необходимо изменить назначение на подпись для обеспечения совместимости ML-DSA.

  1. Откройте консоль шаблонов сертификатов . Щелкните правой кнопкой мыши шаблон веб-сервера и выберите "Дублировать шаблон".

  2. На вкладке Совместимость:

    • Укажите для Certification Authority значение Windows Server 2008 или более позднюю версию.
    • Установите для Certificate recipient значение Windows Vista / Server 2008 или более позднюю версию.
  3. На вкладке "Общие " введите отображаемое имя шаблона (например, веб-сервер PQC).

  4. На вкладке "Обработка запросов " измените назначение на сигнатуру.

    Снимок экрана вкладки «Обработка запросов» шаблона «Веб-сервер», где для параметра «Назначение» выбрано значение «Подпись».

  5. На вкладке криптографии :

    • Задайте для категории поставщика значение Поставщик хранилища ключей.
    • Задайте имя алгоритма требуемому набору параметров ML-DSA (например, ML-DSA:65).

    Снимок экрана вкладки

  6. На вкладке "Расширения" убедитесь, что политики приложений включают только проверку подлинности сервера и не включают политики, связанные с шифрованием.

  7. На вкладке "Безопасность" предоставьте разрешения на регистрацию соответствующим учетным записям компьютера или группам.

  8. Выберите "ОК", чтобы сохранить шаблон, а затем опубликовать его на выдающем центре сертификации.

Вы можете настроить шаблоны сертификатов TLS клиента, такие как пользователь и компьютер, так же. Убедитесь, что расширение политик приложений (EKU) не включает шифрование файловой системы или безопасную электронную почту.

Снимок экрана: вкладка расширений шаблонов пользователей PQC с выбранными политиками приложений и проверкой подлинности клиента, перечисленными в описании политик приложений.

Оформить сертификат ML-DSA

После настройки и публикации шаблона ML-DSA на выдающем ЦС пользователи с соответствующими разрешениями могут запрашивать сертификаты ML-DSA. В следующих разделах описаны два метода регистрации.

Регистрация с помощью certmgr.msc

Используйте графический инструмент регистрации сертификатов, чтобы запросить сертификат на основе опубликованного шаблона ML-DSA.

  1. Войдите на клиентской машине как пользователь с правами Регистрация для опубликованного шаблона.

  2. Откройте certmgr.msc (для сертификатов пользователей) или certlm.msc (для сертификатов компьютера).

  3. Разверните Личные, щелкните правой кнопкой мыши на Сертификаты, а затем выберите Все задачи>Запросить новый сертификат.

  4. В мастере регистрации сертификатов выберите опубликованный шаблон ML-DSA (например, подпись кода PQC или веб-сервер PQC), а затем нажмите кнопку "Регистрация".

  5. После успешной регистрации откройте выданный сертификат и проверьте на вкладке сведений :

    • Алгоритм подписи: отображает набор параметров ML-DSA удостоверяющего центра, выдавшего сертификат.
    • Открытый ключ: отображает набор параметров ML-DSA шаблона и размер ключа.

    Note

    Для шаблонов веб-сервера зарегистрируйтесь с помощью хранилища сертификатов локального компьютера (certlm.msc) вместо текущего хранилища пользователей (certmgr.msc). Предоставьте разрешения объекту компьютера, которому требуется сертификат.

Регистрация с помощью INF-файла и certreq

Этот метод использует INF-файл и certreq.exe средство для запроса сертификата. Это полезно для сценариев, выполняемых с помощью скриптов, или автоматизированных сценариев.

  1. Создайте текстовый файл request.inf с указанным ниже содержимым. В этом примере запрашивается сертификат подписи кода с помощью ML-DSA-44:

    [Version]
    Signature="$Windows NT$"
    
    [NewRequest]
    Subject = "CN=<subject-name>"
    KeyUsage = 0x80
    Keyspec = AT_SIGNATURE
    ProviderName = "Microsoft Software Key Storage Provider"
    ProviderType = 0
    HashAlgorithm = NoHash
    KeyAlgorithm = "ML-DSA:44"
    Exportable = TRUE
    RequestType = PKCS10
    SMIME = False
    
    [EnhancedKeyUsageExtension]
    OID=1.3.6.1.5.5.7.3.3
    Critical=FALSE
    
    [Extensions]
    2.5.29.19 = "{text}CA=False"
    
    [RequestAttributes]
    CertificateTemplate = <template-name>
    

    Замените <subject-name> субъектом сертификата и <template-name> именем опубликованного шаблона.

    Для сертификата TLS используйте следующие изменения:

    • Задайте KeyAlgorithm = "ML-DSA:65" (или набор параметров, который использует шаблон).
    • В [EnhancedKeyUsageExtension] используйте OID=1.3.6.1.5.5.7.3.1 для проверки подлинности сервера.
    • Укажите в CertificateTemplate имя вашего шаблона TLS.
  2. Создайте запрос сертификата:

    certreq -new request.inf request.req
    
  3. Отправьте запрос в ЦС:

    certreq -submit request.req certificate.cer
    
  4. Установите выданный сертификат:

    certreq -accept certificate.cer
    

Проверка выданного сертификата ML-DSA

После завершения регистрации убедитесь, что центр сертификации (ЦС) корректно выдал сертификат ML-DSA:

  1. Откройте certmgr.msc или certlm.msc перейдите к личным>сертификатам.

  2. Дважды щелкните выданный сертификат, чтобы открыть его.

  3. На вкладке "Сведения" подтвердите:

    • Алгоритм подписи: отображает набор параметров ML-DSA удостоверяющего центра, выдавшего сертификат.
    • Открытый ключ: отображает набор параметров ML-DSA, заданный шаблоном.
    • Расширенное использование ключа: показывает ожидаемое назначение, например подпись кода или проверка подлинности сервера.
  4. На вкладке «Путь сертификации» проверьте полную цепочку от корневого ЦС через подчинённый ЦС до сертификата конечного объекта.