接收服务调用、检查证书以及是否允许调用 Azure 上的后端服务

接收服务调用、检查证书以及是否允许调用 Azure 上的后端服务

问题

我有一个应用服务,我希望拥有特定证书的人能够给我打电话,然后将证书的指纹发送给该服务。我应该如何在 Azure 中执行此操作?

更多解释

假设有 10 个不同的系统应该能够使用它们自己的证书(由其签名)调用我的服务。我想用我的证书存储中的证书检查它们,如果是其中之一,则将指纹放入 HTTP 标头并将其发送到我的应用服务。

我目前发现的是:

我觉得这似乎是防火墙的工作,所以我检查了“应用程序网关”,似乎可以解决这个问题。但我找不到可以在哪里设置它以将指纹添加到 HTTP 标头。

有任何想法吗?

答案1

就您而言,Azure 应用程序网关仅限于处理证书。就您而言,最常见的解决方案之一是使用 Azure Key Vault 证书来存储您的证书。每次有人向您的 Web 应用发送请求时,您的应用都需要调用 Azure Key Vault 证书标识符来检索和验证指纹。

这篇文章是一个很好的开始https://docs.microsoft.com/en-us/rest/api/keyvault/certificates-and-policies

如果您使用 REST API,则可以使用“获取证书”操作检索证书的指纹 (https://docs.microsoft.com/en-us/rest/api/keyvault/getcertificate/getcertificate)。响应中的x5t值是指纹信息。

为什么我建议使用 Azure Key Vault?因为它是为证书和加密管理而设计的。我不会说 Azure Key Vault 是最好的或高度安全的,但至少它是为解决您的问题而设计的。

相关内容