使用 X509Certificate2 加载证书时 Azure App Service 502.5 错误响应

Azure App Service 502.5 error response when loading a certificate using X509Certificate2

我有一个要部署到 Azure 应用服务的 .NET Core 应用程序。当我部署并尝试加载站点时,我收到 502.5 错误响应。据我了解,这意味着这是一个权限问题。我试过用 stdout 打印日志,但是当它实际创建日志文件时,它们都是空的。

所以我开始通过注释掉代码来解决这个问题。在 ConfigureServices 我正在加载证书:

var certificate = new X509Certificate2("mycertificate.pfx", "**********");

如果我注释掉这一行,应用程序就会加载。一旦返回,它再次给出错误。

我尝试在 Azure 门户的控制台中使用 chmod 777 mycertificate.pfx 授予 mycertificate.pfx 权限,但它似乎没有任何影响。

我不确定问题是在加载特定文件还是在使用 X509Certificate2

如何设置才能正常工作?

How can I set it up to work?

1.Upload pfx Azure 证书 azure portal. It is required service plan B or above. How to change service plan please refer to this document

  1. 添加一个名为 WEBSITE_LOAD_CERTIFICATES 的应用程序设置,其值设置为证书的指纹将使您的 Web 应用程序可以访问它。

You can have multiple comma-separated thumbprint values or can set this value to “ * “ (without quotes) in which case all your certificates will be loaded to your web applications personal certificate store

3.Access 来自 WebApp

   using System;
    using System.Security.Cryptography.X509Certificates;namespace UseCertificateInAzureWebsiteApp
    {
      class Program
      {
        static void Main(string[] args)
        {
          X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
          certStore.Open(OpenFlags.ReadOnly);
          X509Certificate2Collection certCollection = certStore.Certificates.Find(
                                     X509FindType.FindByThumbprint,
                                     // Replace below with your cert's thumbprint
                                     “E661583E8FABEF4C0BEF694CBC41C28FB81CD870”,
                                     false);
          // Get the first cert with the thumbprint
          if (certCollection.Count > 0)
          {
            X509Certificate2 cert = certCollection[0];
            // Use certificate
            Console.WriteLine(cert.FriendlyName);
          }
          certStore.Close();
        }
      }
    }

我们可以从 document 获得更多信息。