【问题标题】:Implement SSL by Proxy通过代理实现 SSL
【发布时间】:2012-10-07 14:53:43
【问题描述】:

我们正在编写一个提供 RESTful API 的应用程序。需要保护应用程序,但我不希望我的 身份验证/加密 机制污染接口程序或 API。

我想知道代理是否对我们的案例有所帮助,但由于我不是网络开发方面的专家,我需要知道我的图片是否有意义。系统结构如下:

  1. 服务器程序只是在 TCP 端口上导出 API,但只能从本地进程(绑定到 127.0.0.1)访问;

  2. 代理服务器管理 SSL 和身份验证:

    • URI 和方法按原样导出,但是……
    • 只有具有所需功能经过身份验证的用户才能真正调用他们,并且……
    • 通信必须在加密通道上运行

所以,我的问题是:

  1. 这是一个合理的场景吗?

  2. 我可以为这项工作运行什么好的代理服务器?

  3. 这样做有什么缺点吗?

感谢您的帮助!

【问题讨论】:

    标签: security rest ssl proxy


    【解决方案1】:

    您的一般场景似乎可以通过使用 HTTPS reverse 代理来实现。有多种实现方式。

    一种流行的是 Apache Httpd:它可以处理传入的 HTTPS 连接、身份验证(使用各种机制)和反向代理。

    一个典型的场景是,一个“普通”的 HTTP 应用程序在监听 localhost,它前面有 Apache Httpd 并处理外部连接,其中:

    • mod_ssl 处理服务器的 SSL/TLS 配置。
    • 各种mod_auth* 模块之一处理身份验证(取决于您希望如何执行身份验证);这些应该能够将经过身份验证的用户名(例如REMOTE_USER)导出到后端进行授权。
    • mod_proxy 处理与后端应用程序的连接(例如,当应用程序服务器使用 HTTP 本身时,通过 mod_proxy_http)。

    仅让具有所需能力的用户执行某些操作是授权部分。这一个更难与您的主要 API 分开,因为前端无法猜测您如何定义“拥有所需的功能”。这并不是说您必须将其与您的其他逻辑纠缠在一起,而是授权系统需要知道您的 API 是如何工作的(即可能的操作是什么),因此它通常最好在主应用程序中实现。

    【讨论】:

    • 谢谢:这似乎正是我正在寻找的东西!此外,我听说 Apache 需要一个非常复杂的配置,具有快速的学习曲线,并且在配置错误的情况下可能存在安全威胁。这是真的还是只是传说?
    • 如果您从未配置过 Web 服务器或进行过任何 Web 开发,那么无论您使用 Apache Httpd 还是其他(例如 Nginx),肯定会有一个学习曲线。 Apache Httpd 是众所周知的并且被广泛记录,在许多 Linux 发行版中也经常带有合理的配置。错误配置可能会引发安全问题,但任何软件都是如此;在这方面,Apache Httpd 似乎并不比大多数其他人更难。
    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多