Ssl Azure函数应用程序如何处理客户端证书身份验证?

Ssl Azure函数应用程序如何处理客户端证书身份验证?,ssl,azure-functions,client-certificates,azure-function-app,mutual-authentication,Ssl,Azure Functions,Client Certificates,Azure Function App,Mutual Authentication,希望我能说得足够清楚 目标: 客户端证书认证Azure函数 场景: Azure功能应用程序具有: 仅限HTTPS:设置为Yes 客户端证书模式:设置为Require HTTP触发Azure函数(Python),该函数: 加载客户端证书 从数据库中提取预共享客户端证书并比较: 发行人 俗名 在之前/之后无效 点击列出的OCSP端点以查看证书是否已吊销 如果每个证书的属性匹配且证书未被吊销,则函数将为请求者生成SAS令牌并在响应中发送 问题: 在这种情况下,如何处理客户

希望我能说得足够清楚

目标:

  • 客户端证书认证Azure函数
场景:

  • Azure功能应用程序具有:

    • 仅限HTTPS:
      设置为
      Yes
    • 客户端证书模式:
      设置为
      Require
  • HTTP触发Azure函数(Python),该函数:

    • 加载客户端证书
    • 从数据库中提取预共享客户端证书并比较:
      • 发行人
      • 俗名
      • 在之前/之后无效
    • 点击列出的OCSP端点以查看证书是否已吊销
  • 如果每个证书的属性匹配且证书未被吊销,则函数将为请求者生成SAS令牌并在响应中发送

问题:

  • 在这种情况下,如何处理客户端证书身份验证的加密部分
  • 根据,有一个
    CertificateVerify
    步骤,其中
“客户端通过使用其私钥签名进行身份验证
到目前为止所有邮件的散列。收件人验证
使用签名者的公钥进行签名,从而确保签名
已使用客户端的私钥签名。“

到目前为止,我看不到访问所有消息的方法。使用函数(Python)代码验证这一点


这是微软自动处理的吗(类似于他们通过
X-ARR-ClientCert
头转发客户端证书的方式)?或者这是不可能的?

根据我在类似案例中的实现:

  • 您的应用程序通过标头收到证书,并且必须:
    • 加载证书(例如使用python中的库加密)
    • 向您的证书颁发机构验证证书的签名
    • 核实有效日期
    • 验证它是否未被撤销
  • 使用web应用程序(但同样适用于函数),Azure前端似乎只是启动身份验证协议来验证发送证书的客户端是否具有关联的私钥(并启动相互身份验证协议,如博文中所述)。但它不验证证书的有效性或签名
你提到的CertificateVerify步骤似乎是由Azure前端处理的,我认为你不必担心这个过程


希望这有帮助

如果Azure在他们的文档中提到这一点,那将非常有帮助。我想知道更多关于微软代表任何HTTP触发的Azure功能所采取的前端步骤。例如,如果有人尝试自签名证书,会发生什么情况?前端是否会将此转发给功能?