我已经设法在客户端应用程序和Tomcat实例之间成功 Build 了相互SSL . 但是,我现在正在寻找一种方法,只通过相互SSL公开Tomcat中部署的服务子集 . 虽然看起来可以使用APR配置(通过将“SSLVerifyClient”属性的值定义为“可选”),但我似乎无法找到在Tomcat中对SSL的JSSE实现执行相同操作的方法 . 感谢有关如何做到这一点的任何意见 .
干杯,Prabath
(注意,带有APR的 SSLVerifyClient="optional" 等同于带有JSSE连接器的 clientAuth="want" . 尽管是可选的,但这是在连接时协商的,而不是在服务器知道路径后重新协商 . )
SSLVerifyClient="optional"
clientAuth="want"
如果要仅对某些Web应用程序(或路径)使用客户端证书身份验证,则需要使用信任库配置连接器,但请保留 clientAuth="false" .
clientAuth="false"
然后,在 WEB-INF/web.xml 中,您需要配置 CLIENT-CERT 身份验证 . 这将在必要时使用重新协商来请求客户端证书 . 配置如下所示:
WEB-INF/web.xml
CLIENT-CERT
<web-app> <display-name>My Webapp</display-name> <security-constraint> <web-resource-collection> <web-resource-name>App</web-resource-name> <url-pattern>/</url-pattern> </web-resource-collection> <auth-constraint> <role-name>cert</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> </login-config> <security-role> <role-name>cert</role-name> </security-role> </web-app>
(在配置Tomcat用户时,您还需要将用户的主题DN映射到适当的角色 . )
1 回答
(注意,带有APR的
SSLVerifyClient="optional"
等同于带有JSSE连接器的clientAuth="want"
. 尽管是可选的,但这是在连接时协商的,而不是在服务器知道路径后重新协商 . )如果要仅对某些Web应用程序(或路径)使用客户端证书身份验证,则需要使用信任库配置连接器,但请保留
clientAuth="false"
.然后,在
WEB-INF/web.xml
中,您需要配置CLIENT-CERT
身份验证 . 这将在必要时使用重新协商来请求客户端证书 . 配置如下所示:(在配置Tomcat用户时,您还需要将用户的主题DN映射到适当的角色 . )