【问题标题】:securing spring boot app with mTLS - running on Swisscom App Cloud使用 mTLS 保护 Spring Boot 应用程序 - 在 Swisscom App Cloud 上运行
【发布时间】:2018-10-16 16:40:12
【问题描述】:

我有一个部署到 Swisscom App Cloud 的 Spring Boot 应用程序,应该使用 mTLS 进行保护。

显然有 spring 安全性...特定于 Swisscom App Cloud 我读到关于保护https://docs.developer.swisscom.com/adminguide/securing-traffic.html 上的流量。

我不清楚这两者是如何一起玩的......

  • 如果我通过 Spring Security 启用 mTLS,它会按原样工作还是需要为 Swisscom App Cloud 进行额外配置? (我遇到了 HTTP 路由,其中​​提到为 mTLS https://docs.developer.swisscom.com/concepts/http-routing.html 传递客户端证书)
  • Swisscom App Cloud 上的 mTLS 配置是否可以替代我使用 spring security 启用的功能,还是我仍需要在我的应用程序中配置某些内容?
  • 安全流量提到了部署清单和 BOSH 清单,后者(可能是额外的)配置是否需要在 Swisscom App Cloud 上启用 mTLS(即,除了部署清单之外,我是否需要访问配置)?

更新

我的用例是我有一个 REST API,它将被 Swisscom App Cloud 之外的客户端使用。决定使用 mTLS 对其进行保护。

【问题讨论】:

    标签: spring-boot ssl cloud-foundry mutual-authentication swisscomdev


    【解决方案1】:

    您所指的管理员指南适用于平台运营商(即 Swisscom),因此它不是最终用户可以利用的资源。

    您的用例是什么?如果检查列表只是安全要求,请注意平台本身很快就会在内部使用 mTLS,因此直到应用容器得到保护为止的整个路径。这对您的审计员来说可能就足够了。

    如果您确实需要自己验证客户端证书,CF 的做法是利用 X-Forwarded-Client-Cert (https://docs.cloudfoundry.org/concepts/http-routing.html#-forward-client-certificate-to-applications)。

    但是,我们目前尚未启用此功能(直到现在才需要),但我们可以这样做。

    更新:

    根据这个explanationX-Forwarded-Client-Cert的插入实际上是由平台透明地完成的。因此,如果您将客户端应用程序的证书添加到服务器应用程序的信任库,它将验证客户端证书。

    更新 2: 正如您在下面的讨论中看到的那样,从概念上看,目前似乎没有简单的方法允许应用程序使用 X-Forwarded-Client-Cert 执行正确的 mTLS。目前唯一的选择是使用 tcp 路由,您可以向 Appcloud 支持团队提出请求。

    【讨论】:

    • 我用我的用例更新了这个问题。所以在这种情况下,我需要使用 spring security 并检查应用程序中的证书。我仍然不清楚我需要在哪里调整路由配置(我目前可能无法访问它)?
    • @Matthias - 在您的平台首次终止 TLS 时验证证书。通常它位于 LB,但如果您使用第 4 层 LB,它可能会发生在 Gorouter 上。在任何一种情况下,此设备都需要验证客户端提供的证书,如果它有效且受信任,则应添加 x-forwarded-client-cert 标头。如果客户端证书无效或不受信任,LB/Gorouter 将需要拒绝该请求。当它到达应用程序时,应用程序不可能这样做,因为应用程序没有直接与客户端对话。
    • 验证完成后,应用可以使用x-forwarded-client-cert中的值进行授权。即查看通用名称以识别用户并确定用户在应用中的权限。
    • 我认为您可以将其推送到应用程序的唯一方法是您的应用程序使用 TCP 路由。在这种情况下,TLS 连接将直接与应用程序发生,然后应用程序可以处理 mTLS 的所有方面。
    • @DanielMikusa:谢谢!不,你不是偏执狂。这实际上是我们的安全人员做出的一个重要区别:如果 TLS 套接字是打开的,您实际上可以向服务说出协议,从而向协议层打开攻击面。想想可以被利用的 MySQL 漏洞或 HTTP 漏洞。但是,我仍然认为未来我们需要由 Apps 为 mTLS 提供某种“自带 CA”,否则将无法扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2020-11-29
    • 2020-01-08
    • 2018-02-22
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多