Назад | Перейти на главную страницу

Apache и mod_ssl, работающие с несколькими удаленными центрами сертификации для клиентских сертификатов

Создание клиентских сертификатов путем превращения их в собственный центр сертификации с помощью веб-сервера Apache - тривиальная работа, и существует множество документации о том, как этого добиться. Моя проблема немного другая.

У меня есть несколько клиентов, которые хотят иметь собственную инфраструктуру PKI. Они хотят иметь возможность создавать свои собственные клиентские сертификаты, а также отзывать их. Наши веб-серверы по-прежнему несут ответственность за авторизацию их при доступе к нашей веб-службе.

Сможет ли кто-нибудь рассказать, какие возможные решения я могу найти? Я вижу, что в Apache 2.3 есть некоторые директивы, связанные с SSLOCSP * (http://httpd.apache.org/docs/2.3/mod/mod_ssl.html), но я не совсем в восторге от использования Apache 2.3, и даже больше, похоже, что существуют ограничения браузера для SSLOCSP *, и мы имеем дело с клиентами, которые не считают это приемлемым.

В настоящее время не существует полностью автоматизированного метода.

Я не особо увлекаюсь SSL*Path директивы лично, потому что их сложно поддерживать. Итак, мы используем SSLCACertificateFile, SSLCADNRequestFile и SSLCARevocationFile. Затем скрипты Python для обработки обновлений CRL следующим образом:

  1. Получите последний CRL из точки распространения CRL (расширения x509v3).
  2. Проверьте содержимое CRL по локальной копии сертификата CA.
  3. Запишите новый CRL на диск.
  4. Повторите эти действия для других центров сертификации.
  5. Изящно перезапустите Apache.

В этом случае вам просто нужно получить сертификат CA и точку распространения CRL от клиентов, которые управляют своими собственными центрами сертификации.

Предполагая, что вы счастливы доверять каждому сертификату, подписанному их центром сертификации, вы сможете использовать SSLCACertificatePath и SSLVerifyClient require для проверки ваших клиентов. Это означает, что вы не можете знать, когда следует отклонять отозванные сертификаты. Apache 2.2 имеет SSLCARevocationPath вариант, который позволит вам помещать файлы CRL в. Это потребует от вас периодической синхронизации файлов CRL. Частота обновления будет зависеть от того, сколько времени потребуется на синхронизацию и сколько времени после отзыва сертификата вы будете рады принять его. Если синхронизация занимает больше времени, чем вас устраивает, этот подход не сработает. Если вам действительно нужна проверка сертификатов в реальном времени, вам, вероятно, придется подождать, пока выйдет Apache 2.4.

http://www.apacheweek.com/features/crl кажется, дает немного больше информации о том, как это правильно настроить.

Что касается OCSP, нужна ли вам поддержка браузера? Предположительно, если вы проверяете действительность только клиентских сертификатов, только сервер должен поддерживать OCSP.