Apache - клиентские сертификаты
Является ли целью процесса сертификации клиента лишь подтверждение того, что CA, установленный в SSLCACertificateFile (в файле conf), поручился за клиента? Если ЦС является хорошо известным ЦС, то любой, кто имеет свой публичный сертификат, подписанный этим ЦС, может пройти через него как действительный клиент? Немного запутался по поводу всей этой аутентификации клиента.
1 ответ
Да, но:
- Например, в частной установке вы также можете использовать частный внутренний ЦС, чтобы вы могли контролировать, кто получает сертификаты или нет.
- Посмотрите на директиву SSLOptions,
FakeBasicAuth
дело может помочь в некоторых случаях - И вообще, у вас есть директива 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