В этой статье мы обсудим диагностику и подходы к решению ошибки подключения клиентов к серверу ConfigMgr при использовании PKI.
Разберемся:

  • как понять, какая именно ошибка скрывается за 403 Forbidden

  • где хранится информация IIS о CDP и как вручную проверить сертификат

  • как отключить в IIS проверку CRL

После смены ключа CA возникла проблема - клиенты с сертификатами на новом ключе CA не могут подключиться к Management Point.

Смена ключа CA приводит к необходимости выпуска двух CRL - подписанных на новом ключе и на старом (до его истечения), а так же ручного добавления новой LDAP CDP в AD. С этим и была связана проблема. Поэтому без острой необходимости лучше продлевать сертификат на старой криптографической паре.

Для диагностики проблемы полезны следующие логи клиента:
ClientIDManagerStartup.log - выбор сертификата
ClientLocation.log - выбор Management Point

Ошибка доступа записывается в лог CcmMessaging.log

<![LOG[[CCMHTTP] ERROR: URL=https://sccm01.habrahabr.internal/ccm_system/request, Port=443, Options=1504, Code=0, Text=CCM_E_NO_TOKEN_AUTH]
<![LOG[Client doesn't have PKI issued cert and cannot get CCM access token. Error 0x8000ffff]LOG]

В логах IIS на соответствующие запросы фиксировалась ошибка 403.

Чтобы детальнее разобраться в проблеме, в IIS на сервере SCCM необходимо включить компонент расширенного журналирования "Tracing". Это даст возможность видеть внутренние субкоды IIS для ошибок.

Затем для Default Web Site включите трассировку кода 403.

Не забудьте включить и саму запись логов.

После этого в каталог FailedReqLogFiles будут записываться xml-файлы с внутренними субкодами ошибки.
С ошибками сертификатов связаны следующие субкоды IIS:

403.7 Client certificate required
403.12 The user ID that is mapped to the client certificate is denied access to the file
403.13 Client certificate revoked (CRL unreachable)
403.16 Client certificate is untrusted or invalid
403.17 Client certificate has expired or is not yet valid

В нашем случае в XML-файлах была ошибка с субкодом 403.13 - Client certificate revoked. Эта же ошибка возвращается и при недоступности CRL.

<failedRequest url="https://sccm01.habrahabr.internal:443/ccm_system_windowsauth/request"
               siteId="1"
               appPoolId="CCM Windows Auth Server Framework Pool"
               processId="5084"
               verb="CCM_POST"
               authenticationType="NOT_AVAILABLE"               
               activityId="{80000058-0003-F100-B63F-84710C7967BB}"
               failureReason="STATUS_CODE"
               statusCode="403.13"
               triggerStatusCode="403.13"
               timeTaken="16"
               xmlns:freb="http://schemas.microsoft.com/win/2006/06/iis/freb"
               >

Что делать, если возвращается ошибка 403.13?

  1. Проверьте здоровье инфраструктуры PKI в оснастке "Enterprise PKI". Все точки распространения CRL должны быть доступными и содержать актуальный CRL для всех CA в иерархии. Принудительно выпустите свежие CRL на всех CA (включая CRL offline Root CA) и убедитесь, что они опубликованы.

  2. Проверьте на сервере SCCM сертификат клиента и убедитесь в отсутствии ошибок проверки:

```
# -f          Force overwrite
# -urlfetch   Retrieve and verify AIA Certs and CDP CRLs
# -verify     Verify certificate, CRL or chain

certutil -f –urlfetch -verify sccm-client-machine.cer

3. Проверьте файлы кеша CRL IIS

dir /as %windir%\System32\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache\MetaData

Файлы кеша бинарные, но читаемые. Если в них нет упоминания каждой из необходимых CDP - удалите файлы кеша и перезагрузите сервер. После перезагрузки в файлах постепенно должны появиться все CDP из цепочек сертификатов клиентов. Если нет - остается диагностика Wireshark.

Обходное решение

В IIS можно отключить проверку сертификата клиента по CRL.

Проверьте, включена ли в IIS проверка сертификата

netsh http show sslcert

SSL Certificate bindings:
-------------------------

    IP:port                      : 0.0.0.0:443
    Certificate Hash             : e0c1cc43bad7e71b46e570c02ec09e1ccc051ccb
    Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
    Certificate Store Name       : My
    Verify Client Certificate Revocation : Enabled
    Verify Revocation Using Cached Client Certificate Only : Disabled
    Usage Check                  : Enabled
    Revocation Freshness Time    : 0
    URL Retrieval Timeout        : 0
    Ctl Identifier               : (null)
    Ctl Store Name               : (null)
    DS Mapper Usage              : Disabled
    Negotiate Client Certificate : Disabled
    Reject Connections           : Disabled
    Disable HTTP2                : Not Set
    Disable QUIC                 : Not Set
    Disable TLS1.2               : Not Set
    Disable TLS1.3               : Not Set
    Disable OCSP Stapling        : Not Set
    Disable Legacy TLS Versions  : Not Set

Отключите верификацию в реестре:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\0.0.0.0:443
DefaultSslCertCheckMode = 1

Ключ DefaultSslCertCheckMode может принимать следующие значения:

Value

Meaning

0

Enables the client certificate revocation check.

1

Client certificate is not to be verified for revocation.

2

Only cached certificate revocation is to be used.

4

The DefaultRevocationFreshnessTime setting is enabled.

0x10000

No usage check is to be performed.

Перезагрузите сервер и проверьте работоспособность.

Подведем итог.

Трассировка в IIS — обязательный компонент для диагностики ошибок.
Для нормальной работы PKI в SCCM необходимо иметь «здоровую» инфраструктуру и хорошо понимать, что происходит после перевыпуска ключа CA. Использование оснастки «Enterprise PKI» — хороший первый шаг для поддержания инфраструктуры в рабочем состоянии.
А для диагностики полезно знать, как в IIS отключить верификацию сертификатов.