ssl - Azure Function Apps 如何处理客户端证书身份验证?

标签 ssl azure-functions client-certificates azure-function-app mutual-authentication

希望我能说得足够清楚。
目标:

  • 客户端证书认证 Azure Function

  • 场景:
  • Azure 函数 应用 和:
  • HTTPS Only:设置为 Yes
  • Client certificate mode:设置为 Require

  • HTTP 触发的 Azure 函数 (Python),它:
  • 加载客户端证书 from X-ARR-ClientCert header
  • 从数据库中提取预共享客户端证书并进行比较:
  • 发行人
  • 通用名
  • 之前/之后无效

  • 点击列出的 OCSP 端点以查看证书是否被吊销

  • 如果每个证书的属性匹配并且证书未被撤销,则函数将为请求者生成一个 SAS token 并在响应中发送它。

  • 问题:
  • 在这种情况下如何处理客户端证书身份验证的加密部分?
  • 根据this (great) blog post ,有一个CertificateVerify一步在哪里...
  • "The client is authenticated by using its private key to sign ahash of all the messages up to this point. The recipient verifiesthe signature using the public key of the signer, thus ensuring itwas signed with the client’s private key."我没有看到访问... all the messages up to this point. 的方法使用函数 (Python) 代码验证这一点。
    这是 Microsoft 自动处理的事情吗(类似于他们通过 X-ARR-ClientCert header 转发客户端证书的方式)?或者这是不可能的?

    最佳答案

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

  • 您的应用通过 header 收到证书,并且必须:
  • 加载证书(例如使用 python 中的库加密)
  • 向您的证书颁发机构验证证书的签名
  • 验证有效日期
  • 验证它是否未被撤销

  • 使用 Web 应用程序(但同样适用于函数),Azure 前端似乎只是启动身份验证协议(protocol)来验证发送证书的客户端是否具有关联的私钥(并启动相互身份验证协议(protocol),如博客文章中所述) .但它不验证证书的有效性或签名。

  • 您提到的 CertificateVerify 步骤似乎由 Azure 前端处理,我认为您无需担心此过程。
    希望这会有所帮助!

    关于ssl - Azure Function Apps 如何处理客户端证书身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64428946/

    相关文章:

    ssl - 未找到 BizTalk WCF-WebHttp 适配器客户端证书

    ssl - weblogic ssl 握手失败信任库问题

    api - REST 等基于 Web 的 API 与 TLS/SSL 之间有何关系?

    asp.net-web-api - 即使没有 CA 匹配,也强制 ASP.NET WebAPI 客户端发送客户端证书

    azure - (可选)使用 Azure Function 生成输出

    function - Azure Function 处于只读模式

    ssl - 如何配置 Simple Framework 以要求 SSL 客户端身份验证?

    Android 在 OKHttp 中启用 TLSv1.2

    JAVA - 简单的 GET 请求,使用 SSL 证书和 HTTPS

    c# - 需要在运行时使用 Azure Function 中的 ServiceProvider 创建服务