我正在尝试使Tomcat Web应用程序对传入连接使用客户端证书身份验证。在server.xml中使用clientAuth = true时,一切正常,但由于其他应用程序在同一台服务器上运行,因此我们无法在生产环境中使用它。在没有指定用户名的情况下使用CLIENT-CERT for Tomcat
有没有办法形成一个web.xml文档,以便像clientAuth = true一样强制应用程序的客户端证书使用?似乎使用CLIENT-CERT设置还需要为每个要访问系统的证书设置一个tomcat用户帐户?我们需要能够允许来自指定CA(在服务器信任库中设置)的主体匹配某些规则(在实际应用程序中进行检查)的所有证书。我希望像下面这样的东西可以工作,但没有运气!
<security-constraint>
<web-resource-collection>
<web-resource-name>Everything</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
在连接器配置中'clientAuth = false'和'web.xml'中的'CLIENT-CERT'允许您获得客户端证书以进行重新协商,如果您不想/需要其他webapps在浏览器中导致提示。 – Bruno 2012-08-01 18:58:45
这就是我上面想要做的,但是看起来我可能误解了这里的CLIENT-CERT选项的用法。因此,web.xml中的CLIENT-CERT仅**用于使用证书作为特定用户进行身份验证?我迄今为止的大部分经验都是使用IIS,并且我希望Tomcat以同样的方式工作,您可以指定整个服务器,单个项目甚至单个页面是否需要在连接之前呈现有效的客户端证书允许。 – 2012-08-02 08:39:09
@ Christopher-Schultz:我曾尝试过clientAuth = want,但确实有效,但我不确定它是否安全。然而,再想一想 - 如果没有提供证书,我们的代码无论如何都可以解决并拒绝它们。如果他们提供了一个客户端证书,那么在传递给我们的代码进行进一步验证之前,它可能必须经过Tomcat在clientAuth = true时执行的所有检查(例如,可信CA,范围内的有效性等)工作完全一样吗? – 2012-08-02 08:45:31