Apache - клиентские сертификаты

Является ли целью процесса сертификации клиента лишь подтверждение того, что CA, установленный в SSLCACertificateFile (в файле conf), поручился за клиента? Если ЦС является хорошо известным ЦС, то любой, кто имеет свой публичный сертификат, подписанный этим ЦС, может пройти через него как действительный клиент? Немного запутался по поводу всей этой аутентификации клиента.

1 ответ

Решение

Да, но:

  1. Например, в частной установке вы также можете использовать частный внутренний ЦС, чтобы вы могли контролировать, кто получает сертификаты или нет.
  2. Посмотрите на директиву SSLOptions, FakeBasicAuth дело может помочь в некоторых случаях
  3. И вообще, у вас есть директива SSLRequire, где вы можете ограничить доступ на основе любого компонента представленного сертификата, например, его CN.

Пример приведен в документации:

SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)-/                   \
            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd."          \
            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}    \
            and %{TIME_WDAY} -ge 1 and %{TIME_WDAY} -le 5          \
            and %{TIME_HOUR} -ge 8 and %{TIME_HOUR} -le 20       ) \
           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/

Обратите внимание, что SSLRequire в настоящее время устарела в пользу Require который является почти строгим надмножеством этого. На https://httpd.apache.org/docs/2.4/expr.html вы найдете подробную информацию о том, как вы можете тестировать, и о начале https://httpd.apache.org/docs/2.4/mod/mod_ssl.html показывает все возможные переменные "SSL", которые вы можете проверить, например:

SSL_CLIENT_M_SERIAL     string  The serial of the client certificate
SSL_CLIENT_S_DN     string  Subject DN in client's certificate
SSL_CLIENT_S_DN_x509    string  Component of client's Subject DN
Другие вопросы по тегам