我正在尝试使用 SSLRequire 来确保只接受来自特定域的电子邮件的证书。这是我SSLRequire
在文件中的声明.htaccess
:
SSLRequire %{SSL_CLIENT_S_DN_Email} =~ m/^.+@example\.com$/
然而,Apache 却抱怨说:
SSLRequire: syntax error
我究竟做错了什么?
答案1
我将整个工作转移.htaccess
到主服务器配置(一个<Directory>
块内)后问题就消失了,所以要么是我错过了什么,要么就是有一个错误。
答案2
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 的证书。
答案3
根据此链接,SSLRequire 从那时起就被弃用了。