我正在试图让Tomcat Web应用程序对传入连接使用客户端证书认证。当在server.xml中使用clientAuth=true时,一切都正常,但由于在同一服务器上运行其他应用程序,我们无法在生产环境中使用它。
是否有一种方法可以形成一个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
可以让您获取客户端证书以进行重新协商,这很方便,如果您不想/不需要其他Web应用程序在浏览器中引起提示。 - BrunoCLIENT-CERT
认证,则 Web 应用程序本身将要求提供证书以访问受保护的资源。clientAuth=want
只是防止<Connector>
对 所有 请求都要求证书。如果启用 Tomcat 的证书验证,则仅在存在证书时才执行验证,否则将跳过验证。我认为您会对我所提供的配置感到满意。 - Christopher Schultz