Купили сертификат для домена, загрузили в сервер Exchange 2016. А сервер пишет:
Не удалось проверить отзыв
Пример загрузки PFX сертификата Fabrikam.pfx с паролем "P@ssw0rd1":
Import-ExchangeCertificate -FileData ([System.IO.File]::ReadAllBytes('\\FileServer01\Data\Fabrikam.pfx')) -Password (ConvertTo-SecureString -String 'P@ssw0rd1' -AsPlainText -Force)
Почему это произошло?
Такая ошибка произошла потому, что Exchange сервер не имеет доступ в Интернет и не может проверить состояние сертификата, отозван он или нет.
Что делать?
Во-первых, можно ничего не делать. Ну не проверяется отзыв, да и ладно. При невозможности проверить отзыв сертификат считается действительным.
Во-вторых, можно дать серверу Exchange доступ в Интернет. Тогда Exchange сможет проверить списки отзыва. Но иногда нет возможности дать серверу доступ в Интернет, можно только открыть доступ к конкретным доменам. Для этого требуется определить, куда Exchange полезет, чтобы проверить отзыв сертификата.
CRL и OCSP
Если сертификат становится больше не нужен, если скомпрометирован закрытый ключ сертификата, если требуется отменить действие сертификата, то в этом случае сертификат отзывают. Exchange имеет механизм проверки сертификата на отзыв.
CRL и OCSP — это 2 модели, которые могут использоваться для проверки сертификата на предмет его отзыва.
Модель CRL используется с самого начала существования PKI и работает так. Сервер CA при отзыве сертификата помещает о нём запись в специальный файл CRL. При этом туда помещается серийный номер сертификата, дата отзыва и причина отзыва. Клиенты при проверки сертификатов скачивают эти CRL и проверяют есть ли серийный номер этого сертификата в CRL.
В OCSP используется немного иной принцип. Клиент OCSP отправляет на сервер OCSP Responder специальный запрос, в котором содержится серийный номер проверяемого сертификата. OCSP Responder отвечает клиенту откликом: отозван или не отозван.
Оба метода могут использоваться одновременно. Exchange не успокоится, пока не проверит их оба. Наша задача: найти все домены (ссылки) CRL и OCSP нашего сертификата и добавить их в Firewall, чтобы разрешить к ним доступ серверу Exchange. Точнее даже не сертификата, а цепочки сертификатов.
Открываем наш сертификат на просмотр. Я использую формат CRT.
Проверяем, что это именно тот сертификат, который нам нужен. Он действителен. Выдан RapidaSSL. Переключаемся на вкладку "Путь сертификации".
Корневой центр сертификации DigiCert. Но нам нужен промежуточный, тот что нам выдал сертификат (если их несколько, то понадобятся все). Выбираем его. Просмотр сертификата.
Переходим на вкладку "Состав" и выбираем "Доступ к информации о центрах сертификации". И видим протокол определения состояния сертификата через сеть, где указано дополнительное имя OCSP, в данном случае:
- http://ocsp.digicert.com
Разрешаем туда доступ серверу Exchange.
Выбираем "Точки распространения списков отзыва (CRL)". И видим все пути к CRL, у меня это:
- http://crl3.digicert.com/DigiCertGlobalRootCA.crl
- http://cr4.digicert.com/DigiCertGlobalRootCA.crl
Разрешаем туда доступ серверу Exchange. Выполняем на сервере Exchange в командной строке:
certutil -urlcache ocsp delete
certutil -urlcache crl delete
Перезагружаем сервер Exchange и отправляемся пить чай.
Теперь сертификат "Допустимый".