вторник, 7 декабря 2021 г.

Пора переходить на HTTPS. WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED

В марте 2021 года был первый официальный анонс, что HTTP client communication теперь в статусе deprecated, а первый релиз после 1 ноября 2022 года выйдет без данного функционала.

Посмотреть список всех Deprecated features можно по ссылке

Выхода два: использовать Enhanced HTTP, либо использовать существующий/разворачивать новый корпоративный PKI. Более защищенный вариант - использовать корпоративный PKI. 

В случае с корпоративным PKI - необходимо создать шаблоны для серверов с IIS, для DP (на самом деле этот сертификат нужен клиенту во время OSD, закрытый ключ - экспортируемый), для клиентов, а если используете 3rd party update - сертификат для WSUS Code Sign (если хочется использовать от корпоративного PKI, а не самоподписанный). WSUS Code Sign сертификат устанавливается через SCUP.

После этого настроить Autoenroll сертификатов для клиентов - указать в шаблоне, что по нему можно делать Autoenroll, в групповой политике включить этот самый Autoenroll, переключить Communication со стороны сайта в HTTPS Only, Management Point Communication автоматически переключится в HTTPS, подкинуть сертификаты на DP, сделать везде биндинг сертификатов на IIS, переключить WSUS Communication в HTTPS, подправить ssl через wsusutil и радоваться жизни.

Но тут я развернул лабу в HTTP и решил переключить ее в HTTPS, никакого PKI не было, поднял его, сделал выгрузку CRL в папку, создал виртуальную директорию на IIS на эту папку, указал путь в сертификатах до CRL, ткнул на CA опубликовать CRL, они появились, по http доступны, со стороны ConfigMgr все переключил в HTTPS, а клиенты не хотят общаться с Management Point, в CCMMessaging.log видим WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED

И оно вроде бы как намекает, что что-то не так с Certificate Revocation List (CRL), но отовсюду доступно. 

И вот одна маленькая настройка в IIS выпила много моей крови... Решением проблемы было выбрать виртуальную директорию с CRL, перейти в Configuration Editor, выбрать секцию system.webServer/security/requestFiltering, установить allowDoubleEscaping в значение True, нажать Apply и радоваться жизни. 

Виной всему наличие знака + в названии Delta CRL файла.