【发布时间】:2015-04-30 14:05:50
【问题描述】:
在我工作的组织中,我们无法将 Tomcat 用于 SSL,因为他们的策略是通过托管 Apache 实例进行所有身份验证。在这种情况下,根据http://httpd.apache.org/docs/trunk/mod/mod_ssl.html,将 mod_ssl 与 mod_jk 结合使用,并将“REMOTE_USER”设置为“SSL_CLIENT_S_DN_CN”。
我正在处理的 Web 应用程序 (Alfresco) 是根据 Tomcat 容器上 SSL 的预期设计的,角色映射发生在 Tomcat 中,但我不确定如何使用 mod_ssl 使其工作。
来自web.xml,我正在处理的设置是:
<security-constraint>
<web-resource-collection>
<web-resource-name>SOLR</web-resource-name>
<url-pattern>/wcs/api/solr/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>repoclient</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Repository</realm-name>
</login-config>
<security-role>
<role-name>repoclient</role-name>
</security-role>
任何建议将不胜感激。我环顾四周,看看是否有任何关于如何处理这个问题的提示,但我运气不佳。
【问题讨论】:
-
如果我正确理解了您的场景,您仍然可以在您的 tomcat 容器中激活 SSL。用户将通过 SSL 连接到 Apache。然后 Apache 通过 localhost 与 tomcat 的新 SSL 连接代理请求。当然,您需要额外建立一个 SSL 连接。
-
@fishi 在这种情况下完全没有意义。应用程序需要客户端证书,而不是 Apache HTTPD 的证书。
-
@Andre M. 它会起作用的。就试一试吧。 Apache 将通过请求标头向 Tomcat 提供客户端证书,而 Tomcat 将通过请求属性以正常方式将其提供给 webapp。
-
您可以配置 mod_jk 通过请求属性传递客户端证书信息。但是 afaik 你不能在请求标头中传递信息。
标签: java apache tomcat ssl alfresco