Я пытаюсь использовать SSLRequire, чтобы гарантировать, что принимаются только сертификаты с электронной почтой из определенного домена. Это мое SSLRequire
заявление, внутри .htaccess
файл:
SSLRequire %{SSL_CLIENT_S_DN_Email} =~ m/^.+@example\.com$/
Однако в этой строке Apache жалуется:
SSLRequire: syntax error
Что я делаю не так?
http://wiki.cacert.org/ApacheServerClientCertificateAuthentication
Иногда вы хотите сказать - да, примите любой сертификат от CAcert с адресом электронной почты @ example.com и не беспокойтесь о ведении длинных списков. Это возможно следующим образом:
SSLRequire %{SSL_CLIENT_S_DN_Email} =~ m/^[^@]*@example\.com$/
Полный список здесь http://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslrequire. Иногда сертификаты могут содержать более одного адреса электронной почты, поэтому:
SSLRequire %{SSL_CLIENT_S_DN_Email} =~ m/^[^@]*@example\.com$/
or %{SSL_CLIENT_S_DN_Email_0} =~ m/^[^@]*@example\.com$/
or %{SSL_CLIENT_S_DN_Email_1} =~ m/^[^@]*@example\.com$/
or %{SSL_CLIENT_S_DN_Email_2} =~ m/^[^@]*@example\.com$/
or %{SSL_CLIENT_S_DN_Email_3} =~ m/^[^@]*@example\.com$/
Вы должны изменить сообщение об ошибке (см. Выше), указав, что также требуются сертификаты для @ example.com.
Я оффшор целиком .htaccess
в конфигурацию основного сервера (внутри <Directory>
block), и проблема исчезла, так что либо я что-то пропустил, либо это ошибка.
В соответствии с эта ссылка, SSLRequire с тех пор устарел.