Azure Web 应用程序“ERR:带指纹的证书:...'在本地计算机证书存储中找不到。”

Posted

技术标签:

【中文标题】Azure Web 应用程序“ERR:带指纹的证书:...\'在本地计算机证书存储中找不到。”【英文标题】:Azure web app "ERR: Cert with thumbprint: ...' not found in local machine cert store."Azure Web 应用程序“ERR:带指纹的证书:...'在本地计算机证书存储中找不到。” 【发布时间】:2017-09-29 13:05:43 【问题描述】:

我正在尝试在 Asp.NET Core 1.1 应用程序中使用 Apple 推送证书,但它找不到任何证书。

我上传了证书并将 WEBSITE_LOAD_CERTIFICATES 设置为 *(all)。

以下代码是我用来获取证书的代码

  var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
  try
  
      store.Open(OpenFlags.ReadOnly);

      var certCollection = store.Certificates;
      var signingCert = certCollection.Find(X509FindType.FindByThumbprint, thumbprint, false);
      if (signingCert.Count == 0)
      
          throw new FileNotFoundException(string.Format("Cert with thumbprint: '0' not found in local machine cert store.", thumbprint));
      
      return signingCert[0];
 

我错过了什么?

【问题讨论】:

你试过StoreLocation.CurrentUser吗?这就是我必须在 Azure 中访问已安装的应用程序证书的操作。另请参阅this answer。 是的,同样的事情 当您将WEBSITE_LOAD_CERTIFICATES 设置为指纹而不是通配符时会发生什么? 没什么,一样的 【参考方案1】:

您似乎想upload your certificate to the certificates collection in Azure Websites and consume it in your web application from your site’s personal certificate store。我正在上传我的证书并使用以下代码在 Asp.NET Core 1.1 应用程序中使用它,该代码适用于我。

X509Certificate2 retVal = null;

var thumbprint = "cert_thumbprint";
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);

store.Open(OpenFlags.ReadOnly);

var certCollection = store.Certificates;

var signingCert = certCollection.Find(X509FindType.FindByThumbprint, thumbprint, false);

if (signingCert.Count > 0)

    retVal = signingCert[0];

远程调试代码,代码在天蓝色网站上运行良好

【讨论】:

但它只适用于生产环境,在开发中仍然是空证书。

以上是关于Azure Web 应用程序“ERR:带指纹的证书:...'在本地计算机证书存储中找不到。”的主要内容,如果未能解决你的问题,请参考以下文章

Azure:仅允许使用 *** 从本地访问 Web 应用程序

通过 Azure Devops 将 .Net Core 3.1 Web 应用程序部署到 Azure Linux Web 服务时出错

将 Web 应用程序发布到 Azure 期间出现异常

性能缓慢 Azure“Web 应用”+ Azure SQL DB

静态 Web 应用的 Azure 前门 WAF ip 限制

Azure 应用服务响应 Web 应用(Linux Web 应用)容器无法启动