Прежде всего нам необходимо различать сертификаты на стороне сервера и на стороне клиента.
В большинстве случаев используется только серверный сертификат. Он используется, чтобы позволить клиенту проверять подлинность сервера, к которому он подключен, путем проверки сертификата сервера (процедура проверки будет описана ниже). Это должно предотвратить атаку «человек посередине» (MITM).
Сертификат на стороне клиента используется, когда нам нужно ограничить доступ к серверу только некоторым пользователям. Для этого клиент аутентифицирует себя с помощью сертификата. Поскольку набор пользователей обычно ограничен (по некоторым критериям он может быть довольно большим в реальной жизни), процедура проверки часто немного отличается от процедуры проверки сертификата сервера.
Далее, о самой проверке.
При проверке сертификата сервера на клиенте клиент предпринимает следующие шаги:
- Найти сертификат эмитента (ЦС) и проверить подпись сертификата сервера, используя сертификат эмитента (технические данные пропущены).
- Проверка срока действия сертификата (с момента, когда и когда сертификат должен быть принят).
- Проверка использования сертификата по назначению (каждый сертификат может быть ограничен только некоторыми целями).
- Убедитесь, что сертификат выдан для доменного имени (или IP-адреса), на котором расположен сервер.
- Убедитесь, что ЦС не отменил (отозвал) сертификат. Это делается путем проверки списков отзыва сертификатов (CRL) и отправки запроса на лету с использованием протокола OCSP.
- Поскольку CRL и ответы OCSP подписываются с использованием сертификатов, их подписи также проверяются, как описано выше.
- Процедура повторяется для сертификата CA, упомянутого в шаге (1), и продолжается до тех пор, пока вы не получите сертификат доверенного корневого CA (предполагается, что у клиента есть набор доверенных корневых сертификатов).
Когда сервер проверяет сертификат клиента, описанная выше процедура обычно упрощается, поскольку одна и та же система является ЦС, и сервер, доступ к которому проверен. В этом случае сертификаты могут быть сопоставлены непосредственно со списком разрешенных сертификатов, или большинство из вышеперечисленных шагов могут быть ненужными.