У нас есть центр сертификации Microsoft, работающий на Windows Server 2019. Мы выдаем сертификаты устройствам Android через MDM. Пользователи устройств Android просматривают веб-приложение (размещенное Apache, реализованное на PHP 8) с помощью веб-браузера Chrome (на Android), которому требуется клиентский сертификат.
Мы устанавливаем отдельный экземпляр Windows Server 2019 с ролью Microsoft OCSP Responder для проверки/удостоверения того, что клиентские сертификаты, представленные веб-серверу Apache, действительны. Apache имеет несколько директив для обработки проверки OCSP. Мы также хотели бы проверить сертификаты в PHP для дополнительной безопасности.
Из моего исследования, в ходе которого я прочитал несколько RFC и технических документов Microsoft, следует, что Microsoft OCSP Responder проверяет сертификаты, сверяясь со списком отзыва сертификатов (CRL) для определения статуса отзыва.
Как Microsoft OCSP Responder проверяет сертификаты, если они были удалены из CA, а не отозваны? Если они удалены и не отозваны, они не будут отображаться в CRL.
Я что-то упустил? Будет ли Microsoft OCSP Responder проверять серийный номер по базе данных CA, а также его статус отзыва?
решение1
Будет ли Microsoft OCSP Responder проверять серийный номер по базе данных CA, а также его статус отзыва?
По умолчанию Microsoft OCSP будет сообщать о таком серийном номере как о "Good". Начиная с Windows Server 2008 R2, в Microsoft OCSP добавлена функция детерминированного ответа OCSP. Короче говоря, CA публикует все серийные номера когда-либо выпущенных сертификатов, а OCSP настроен на просмотр этого каталога. Новое поведение делает следующее:
- если серийный номер не существует в папке, OCSP отвечает статусом
UNKNOWN
. Это означает, что запрошенный серийный номер никогда не был выдан CA - если серийный номер существует в папке, проверяется CRL
- если серийный номер указан в CRL, ответьте со
REVOKED
статусом, в противном случае ответьте со статусомGOOD
.
Более подробная информация о базе знаний Microsoft:Служба Online Responder не возвращает детерминированный результат GOOD для всех сертификатов, не включенных в CRL.
База знаний содержит скрипт, который выгружает все серийные номера выданных сертификатов в настроенную папку. Однако скрипт немного несовершенен. Он экспортирует только серийные номера, которые существуют в базе данных CA во время выполнения скрипта. База данных CA поддерживается, и старые записи удаляются, чтобы предотвратить переполнение базы данных CA. Это приведет к ложноположительному UNKNOWN
статусу удаленных сертификатов, хотя сертификат был выдан и существует где-то в свободном доступе. Я предпочитаю сохранять все выданные сертификаты независимо от обслуживания CA и отвечать GOOD
даже если сертификат был удален из CA. Чтобы устранить этот недостаток, я бы рекомендовал удалить эти строки из скрипта:
dir | foreach {
remove-item $_ -force
}
это позволит сохранять серийные номера, которые больше не существуют в CA между запусками скрипта.