Apache&Tomcat&mod_jk仅在特定页面上进行SSLredirect

我们有一个运行Apache和Tomcat的Windows服务器,并启用了mod_jk。 Tomcat应用程序运行得非常好,就像单独的PHP应用程序(在Apache下)一样。 我们在Apache下安装了商业SSL证书,并在httpd-ssl.conf文件中创build了一个指令。 所有这一切正常。

如果我们直接浏览到https://www.domain.com/app/foo/bar,它工作正常,所以我们知道证书正在工作。 我们的问题是,我们希望某些页面(特别是JSP页面)在https下加载。 我们尝试将.htaccess文件放在适当的文件夹中(我们认为这些servlet是活着的),并且什么都不做,大概是因为Tomcat没有提供这些页面,Apache是​​(这是正确的想法?)。 所以,我们很困惑,我们应该在什么地方configuration规则(?)来为某些JSP页面强制https而不是其他页面。 据推测,Apache应该处理这个,但由于.htaccess文件不能正常工作,还有什么其他的select?

我想知道是否configuration了apache / mod_jk,以便匹配*.jsp/webappdir/*.jsp请求被传递给tomcat,然后您的.htaccess更改才有机会将该redirect发送到https。

你会想要在你的tomcat web.xml中添加安全约束,以便匹配url-pattern /webappdir/*.jsp的请求被设置为使用CONFIDENTIAL传输保证。 (至less,这是servlet和jsp规范似乎认为你会想要做的)我没有一个系统现在玩,但也许在你的web.xml中的以下内容的东西可能工作:

 // Sample Security Constraint <security-constraint> <web-resource-collection> <web-resource-name>require ssl</web-resource-name> <url-pattern>/webappdir/*.jsp</url-pattern> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </web-resource-collection> </security-constraint> 

警告:我不是100%确定的url模式,你可能需要在这里尝试一下。 如果你不想sslencryption所有的jsp,你可能会得到一个更长的URL模式条目列表。 此外,我不记得是否tomcat发出301redirect,build议浏览器使用https重新跟踪链接,或者如果tomcat发出其他状态码。

当然,ssl不会增加太多的开销,所以你可以encryption整个网站。 这可能会让你更加注重安全意识的访问者更加快乐。