我在Apache 2.2和我能find的SSLRequire 文件function的小文档上遇到了麻烦。 我正在尝试使用SSLRequire检查请求中的客户端证书的电子邮件属性。
httpd.conf文件中的以下选项效果很好:
SSLRequire %{SSL_CLIENT_S_DN_Email} in { "[email protected]" }
但正如我可以在文档中阅读,您可以使用filter的值列表。
从官方文档引用:
file(文件名) – 这个函数接受一个string参数并扩展到文件的内容。 这对匹配正则expression式等内容特别有用。
所以,按照文档,我把以下内容放在httpd.conf文件中:
SSLRequire %{SSL_CLIENT_S_DN_Email} in { file("/etc/httpd/mail-list") }
文件邮件列表只包含一行内容[email protected] (试图模拟没有file的选项)。
但是当我尝试访问我的HTTPS服务器时,我在日志中看到以下内容:
Failed expression: %{SSL_CLIENT_S_DN_Email} in { file("/etc/httpd/mail-list") }
此消息通常在模式无法应用时出现。 有人可以帮我在这里,我怎样才能使用这个function?
根据apache-modssl邮件列表中的这个旧线程 , file()将file()的内容读入单个string,因此引用文件中的特殊字符(如换行符)可能会破坏SSLRequire语法。
鉴于这是由mod_ssl原作者张贴,我相信这个理论是现货。
在/etc/httpd/mail-list尝试以下内容:
"[email protected]","[email protected]","[email protected]"
没有尾随的换行符