我有apache2 httpd版本2.2.9,在启用SSLEngine的情况下在端口443上进行侦听。所有URL都带有SSLVerifyClient require
,这很好用。
我想为特定URL(/ca.crt
)设置例外,以便我的客户可以下载与我们签发它们的证书签名的CA证书。我尝试以下方法:
SSLVerifyClient require
Alias /ca.crt /my/ssl/certs/ca.crt
<Location /ca.crt>
SSLVerifyClient none
</Location>
我的问题是,Apache似乎只想增加SSL客户端证书要求的强度。如果我同时满足这两个要求,它将按指定方式工作。按照上面的配置,Apache有效地忽略了SSLVerifyClient none
指令。
发生了什么事?这是一个错误吗?
确定,这个问题的答案在文档中(通常如此!)
在每服务器上下文中[SSLVerifyClient指令]适用于使用的客户端身份验证过程在标准SSL握手中建立连接。
See Apache Docs - SSLVerifyClient
基本上第一个SSLVerifyClient
指令位于每个服务器的上下文中。我为根目录做了一个显式的<Directory>
声明,并将SSLClientVerify require
指令放在其中。这成功了。