tomcat - 在 Tomcat 中为每个服务启用相互 SSL

标签 tomcat ssl tomcat7

我已经成功地在客户端应用程序和 Tomcat 实例之间设置了相互 SSL。不过,我现在正在寻找一种方法,通过相互 SSL 只公开 Tomcat 中部署的服务子集。虽然看起来可以使用 APR 配置(通过将“SSLVerifyClient”属性的值定义为“可选”),但我似乎找不到一种方法来对 Tomcat 中 SSL 的 JSSE 实现执行相同的操作。感谢任何有关如何完成此操作的意见。

干杯, 普拉巴斯

最佳答案

(请注意,使用 APR 的 SSLVerifyClient="optional" 相当于使用 JSSE 连接器的 clientAuth="want"。尽管是可选的,但这是在连接时协商的,一旦服务器知道路径,就不会重新协商。)

如果您只想对某些 Web 应用(或路径)使用客户端证书身份验证,则需要使用信任库配置连接器,但保留 clientAuth="false"

然后,在您的 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 映射到适当的角色。)

关于tomcat - 在 Tomcat 中为每个服务启用相互 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246961/

相关文章:

java - HTTP 状态 500 - java.lang.ClassNotFoundException : org. apache.jsp.index_jsp

java - EST 与充气城堡

ssl - 谁能在 Github 或 Bitbucket 的上下文中解释 SSH、SSL、HTTPS?

java - Spring Boot 中的 Kafka 配置类找不到 keystore 或信任库

java - Tomcat 7 未在 Eclipse 4.2 中启动(超时)。如何获得更详细的输出?

java - Tomcat 9 无法加载资源 : the server responded with a status of 404 ()

mysql - 我想从我的表中以 Json 格式获取 3 条记录,但得到重复项

java - 在 tomcat 中使用 j_security_check 自动登录

eclipse - 访问Eclipse启动的Tomcat失败

Ubuntu 或 Ubuntu 服务器中的 Tomcat 7?