В этой статье мы обсудим диагностику и подходы к решению ошибки подключения клиентов к серверу 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?
Проверьте здоровье инфраструктуры PKI в оснастке "Enterprise PKI". Все точки распространения CRL должны быть доступными и содержать актуальный CRL для всех CA в иерархии. Принудительно выпустите свежие CRL на всех CA (включая CRL offline Root CA) и убедитесь, что они опубликованы.
Проверьте на сервере 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 отключить верификацию сертификатов.
