我正在尝试使用SSLRequire来确保只接受来自特定域的电子邮件的证书。 这是我的SSLRequire语句,在.htaccess文件中:
SSLRequire %{SSL_CLIENT_S_DN_Email} =~ m/^.+@example\.com$/
不过,有了这条线,Apache抱怨道:
SSLRequire: syntax error
我究竟做错了什么?
我离开了整个.htaccess的主服务器configuration(在一个<Directory>块),问题消失了,所以要么我错过了什么,这是一个错误。
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的证书也是必需的。
根据这个链接 ,SSLRequire已经被弃用了。