Apache HTTP的部分客户端证书请求

我有一个启用SSL的Apache HTTP服务器并请求客户端证书。

如何将Apache设置为仅在用户点击某个网站的某个部分时才请求证书?

例:
/ myapp /不应该要求证书
/ myapp2 /应该请求证书

注意:这些应用程序正在使用mod-jk服务

这里的诀窍是你需要在tomcat中这样做。 因为这实际上是在执行请求。

由于客户端身份validation是在每个连接器的基础上,您将需要创build2个新的连接器。 一个用于基本SSL w / auth,另一个用于mod_jk连接器(任意select的端口为cur + 1)。

<!-- Client Auth Connector on port 8444 --> <!-- <Connector port="8444" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" /> --> <!-- Client auth ajp connector on port 8010 --> <Connector port="8010" enableLookups="false" redirectPort="8444" debug="0" protocol="AJP/1.3" /> 

然后,设置一个辅助mod_jk worker来连接到apache的客户端auth SSL for / myapp2

像这样的应该做的魔术:

 <Directory /myapp2> SSLVerifyClient require </Directory> <Directory /myapp> SSLVerifyClient none </Directory> 

有关SSLVerifyClient指令的更多信息。

这可能工作: http : //httpd.apache.org/docs/2.0/ssl/ssl_howto.html#arbitraryclients

我如何根据证书对特定的URL进行身份validation,但仍允许任意客户端访问服务器的其余部分?

为此,我们再次使用mod_ssl:httpd.conf的每个目录的重新configuration特性

 SSLVerifyClient none SSLCACertificateFile conf/ssl.crt/ca.crt <Location /secure/area> SSLVerifyClient require SSLVerifyDepth 1 </Location>