如何在SSL握手期间仅针对某些请求配置Tomcat身份验证而配置Tomcat

时间:2019-06-26 15:57:39

标签: java spring ssl tomcat

我有一个在Tomcat上运行的Web应用程序,并且已经配置了通过SSL的服务器身份验证。现在,我还需要设置客户端身份验证。当前,我们为用户提供了不同类型的身份验证机制,如果只有用户从我们提供的可能的身份验证机制中选择浏览器上的此选项,我们希望使用户能够使用客户端证书登录系统。 在tomcat server.xml中将clientAuth = true设置不会对我有多大帮助,因为这不是我们总是要求用户提供证书的情况。

我要实现的方案,如果用户要通过证书对系统进行身份验证,则只有在这种情况下,浏览器才应显示存储在“当前用户个人证书”中的可能的身份验证证书(在本例中,证书是由第三方颁发的)在Windows上),选择后应将请求重定向到包含X509证书的服务器,以便我可以解析证书并进行一些服务器端验证

我对如何配置tomcat以启用/禁用客户端SSL身份验证(取决于用户的偏好)有点迷惑,也不知道如何在浏览器的用户证书存储中显示可能的证书。任何指南/提示都将受到高度赞赏。

注意:技术堆栈我使用Java,Spring MVC。

1 个答案:

答案 0 :(得分:0)

server.xml中设置SSLHostConfig属性certificateVerification="optional"。这是server.xml的一部分的非常粗糙,不完整的示例:

<Service name="Catalina">
  <Connector SSLEnabled="true" etc etc>
    <SSLHostConfig certificateVerification="optional" etc etc>
    </SSLHostConfig>
  </Connector>
</Service>

请参见https://tomcat.apache.org/tomcat-8.5-doc/config/http.html#SSL_Support_-_SSLHostConfig