【问题标题】:Enabling mutual SSL per service in Tomcat [closed]在 Tomcat 中为每个服务启用相互 SSL [关闭]
【发布时间】:2012-10-26 03:58:29
【问题描述】:

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

干杯, 普拉巴斯

【问题讨论】:

  • 您是否考虑过阅读连接器的 Tomcat 文档?

标签: tomcat ssl tomcat7


【解决方案1】:

(请注意,带有 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 映射到适当的角色。)

【讨论】:

    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2019-06-21
    • 2016-10-19
    • 2017-12-15
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多