The certificate status could not be determined because the revocation check failed

В Интернете много статей, которые рассказывают о том, как бороться с ошибкой "The certificate status could not be determined because the revocation check failed", но к сожалению, мне не удалось найти ту, которая описывала бы мою проблему, так что я решил написать эту короткую заметку.

 

Начнем с того, что сообщения в графической консоли поводу ошибки в сертификате совсем не означает, что сертификат нельзя назначить на нужные сервисы. Exchange Management Shell не выполняет подобных проверок и через EMS вы легко можете достичь желаемого:

  •  Get-ExchangeCertificate
  • Копируем Thumbprint
  • Enable-ExchangeCertificate -Thumbpring <отпечаток, полученный выше> -Services SMTP,IIS,IMAP

 

Далее, почему такая ошибка может быть

 

Дело все в том, что в Exchange Management Console есть процедура проверки сертификатов и одним из шагов данной проверки является проверка на "отозванность", т.е. серверу нужно скачать Certificate Revocation List (CRL), выпущенный центром сертификации, выдавшим данный сертификат, и убедиться, что в этом листе нет текущего сертификата.

 

Откуда будем качать CRL?

В каждом сертификате есть специальное поле CRL Distribution Points, где обозначено откуда можно скачать CRL:

 

 

Для доступа в Интернет по HTTP, Exchange использует настройки прокси сервера, указанные в системе, посмотреть можно через

netsh winhttp show proxy

Подробнее про WinHttp и как это настроить читайте здесь - https://support.microsoft.com/kb/979694

Соответственно на прокси должен быть разрешен выход в Интернет для данного сервера.

 

Как проверить сертификат?

 

Для начала попробуем открыть ссылку, указанную в CRL Distribution Point, прямо в браузере - должен загрузиться соответствующий файл (у меня открылся)

 

Далее следует выполнить очистку CRL и OCSP кэшей:

 

Certutil -urlcache ocsp delete
certutil -urlcache crl delete
 

 

После этого можно проверить сертификата через утилиту Certutil:

  • Экспортируйте сертификат в файл (без закрытого ключа)
  • Выполните команду

Certutil -url <certificate file name>

  •  Нажмите кнопку Retrieve
  • В результате статус для Base CRL и Delta CRL должен быть Verified

 

Видим, что есть ещё и CRL+ - это собственно Delta CRL, который мы конфигурировали на СА. Чтобы понять почему в данном случае не проходит проверка Delta CRL я ещё раз открыл консоль управления Exchange с включенным Network Monitor`ом и вот что получилось:

 

 

Выходит, что IIS отвечает File Not Found, хотя при этом файл в каталоге есть.

После не продолжительных поисков стало понятно, что по умолчанию IIS блокирует ссылки в которых есть знак "+". Для того, чтобы разрешить IIS принимать запросы, у которых в адресе указан знак “+”, откроем командную строку (cmd) от имени администратора на сервере с установленным центром сертификации и выполняем команду:

 

%windir%\system32\inetsrv\appcmd set config /section:requestfiltering /allowdoubleescaping:true

 

После чего следует перезапустить службу Microsoft.Exchange.ServiceHost и открыть консоль заново.

В моем случае это решило проблему. Если у вас проблема сохраняется - мы можем обсудить это в комментариях к статье.

Alexey Bogomolov,

Microsoft Engineer,

Customer Service and Support