Apache,mod_ssl,mod_jk,tomcat和客户端证书过滤

我正在一个非常具体的apache + mod_ssl + mod_jk + tomcat上工作

到目前为止,一个基本的configuration工作,我想要的:访问我的webapps背后的东西很好。 我使用通配符证书的前端(因此,Apache)。 连接是这样的:

[apache] < – > [mod_JK] < – > [tomcat]

apache :2.2.17

Tomcat :7.0.12

JK_mod版本 :1.2.31

注意 :目前我只有1个tomcat正在运行,但是我可能需要使用mod_jk中的负载均衡器添加其他的。

好吧,现在是有趣的部分。 我需要使用客户端证书来保护我的webapps。 例如,为了访问“webapp1”而向“用户1”提供“客户证书1”应该被允许,但是不应该允许任何其他web应用。 这对于“用户2”是一样的:使用他自己的客户端证书(客户端证书2)访问webapp2,等等。

为了更加灵活(在webapp中也有一些java代码,所以这很理想),我决定让Tomcat处理客户端证书,而不是Apache。 但是有一个棘手的方面:对于网页浏览(使用互联网浏览器,如Firefox,IE等),应该使用通配符证书(这个证书是由verisign生成的,然后在apache conf ); 但是对于应用程序数据上传(这些是web应用程序的function),要求客户端证书(见上)仅允许非常有限的访问。

我知道这可能听起来很愚蠢,但这就是我所要求的…

我已经结束了2种不同的configuration:

1)在端口443上使用带有通配符证书的Apache和在端口8443上使用Tomcat – SSL

通过网页浏览器,我可以通过mod_jk通过apache查看我的应用程序。 数据上传通过Tomcat SSL端口执行。 这可能是正常的,但我可能需要稍后运行多个Tomcat实例,所以我不知道它将如何performance。 但这可能是一个解决scheme。 到目前为止,这是最重要的configuration

2)在端口443上使用apache,在8080端口上使用tomcat

我能够查询我的密钥库来检索任何客户端证书。 问题是,我不能再使用我的通配符证书,并需要客户端证书来访问我的web浏览器(我不想)。

接下来,为了尝试解决这个问题,我尝试在apache中添加一个虚拟主机,使其拥有2个不同的servername。 我想要的是一个DNS名称用于浏览我的应用程序,另一个用于将数据上传到我的应用程序。 但它仍然要求客户证书。

所以我的问题是:

1)根据我的prerequesites,这是可行的吗?

2)假设是,我是对的还是应该考虑另一种方法?

3)如果我做得对,我远离解决scheme吗?

如果需要,我可以提供conf文件。

使用Apache来做这个而不是tomcat是可能的

很多很多的感谢(我现在正在撞我的头几天)

PS:我已经看到了链接“ 使用SSL和客户端证书的Apache httpd后面的Tomcat ”,但它只能部分回答我的问题