如何通过 Azure API 管理层向微服务添加 HTTPS/SSL 支持,而无需应用服务器支持 SSL?

Posted

技术标签:

【中文标题】如何通过 Azure API 管理层向微服务添加 HTTPS/SSL 支持,而无需应用服务器支持 SSL?【英文标题】:How to add HTTPS/SSL support to a microservice via Azure API management layer without app server having to support SSL? 【发布时间】:2020-06-26 01:59:28 【问题描述】:

我有一个 Azure APIM 设置,它接收网站请求并将其转发到相应的微服务节点。该网站仅支持 http 请求,现在我希望将其更改为 HTTPS/SSL。

微服务节点上的应用服务器不支持 SSL,所以我有两个选择:

    在微服务节点上 - 更改为另一个支持 SSL 的应用服务器 或在微服务节点上 - 添加执行 SSL 并将请求转发到应用服务器的 Web 服务器 (nginx)(Web 服务器和应用服务器将位于同一节点上) 或在 Azure API 管理层配置 SSL

我更喜欢使用选项 3,这样微服务节点只负责处理请求,而 HTTPS/SSL 位由 Azure API 管理层处理。这个documentation 似乎暗示了如何在网关的 SSL 终止和端到端 SSL 中实现这一点。但是,有两个问题:

    这篇文章是关于应用程序网关的 - 我正在寻找类似的 API 管理解决方案(API 网关)。 如果我希望使用端到端 SSL 模式,而不是 SSL 终止模式(在网关处终止 SSL),那么我的应用服务器需要具备 SSL 功能吗?

如何通过 Azure API 管理层为微服务添加端到端 SSL 支持,而无需应用服务器支持 SSL?

【问题讨论】:

【参考方案1】:

API 管理 (APIM) 充当反向代理 - 很像您示例中的 nginx。 APIM 默认支持 SSL,可以做 SSL 终止。

APIM 还将毫无问题地与您的后端服务通信 - 您只需为后端选择“http”而不是“https”。

【讨论】:

我假设应用服务器必须确保它创建或重定向到的任何 url 必须具有 https 方案。 API网关和API管理一样吗?我正在阅读这个 - docs.microsoft.com/en-us/azure/application-gateway/… - 这个 API 网关功能与 API 管理功能相同吗? API 网关是 API 管理产品的核心功能。应用程序网关是一个完全不同的产品——尽管它也可以解决您在网关处终止 SSL 的要求。 API 管理还可以重写后端返回的 URL:docs.microsoft.com/en-us/azure/api-management/… 好的,所以 API 管理提供了与应用程序网关相同的功能等等。我这样说是否正确 - 如果网关处的 ssl 终止和端到端 SSL,则不需要让应用服务器支持 SSL? 应用服务器不需要支持 SSL,您的解决方案也能正常工作。 “端到端 SSL”在 API 管理处停止。 API Management 与您的应用服务之间的通信将不使用 SSL。

以上是关于如何通过 Azure API 管理层向微服务添加 HTTPS/SSL 支持,而无需应用服务器支持 SSL?的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure API 管理服务上将多个产品添加到订阅

正文未通过 Azure API 管理发送

如何使用 Terraform 将 log-to-eventhub 策略添加到 Azure API 管理策略

如何使用 Azure API 管理为 API 中的每个方法设置 405 Method Not Allowed

如何在 Azure API 管理上分离开发和生产环境?

Azure API 管理 - 与底层服务进行身份验证和授权同步