【Azure 应用服务】应用代码中需要使用客户端证书访问服务接口,部署在应用服务后报错不能找到证书(Cannot find the X.509 certificate)

应用,服务,证书,find · 浏览次数 : 38

小编点评

## 问题分析 在使用系统证书进行认证时,由于代码运行在 App Service 实例上的应用程序,无法直接访问实例上的证书,导致证书检索失败。 ## 解决方案 根据官方文档的描述,设置`WEBSITE_LOAD_CERTIFICATES`参数至`WEBSITE_LOAD_CERTIFICATES`值可以解决这个问题。`WEBSITE_LOAD_CERTIFICATES`参数控制是否加载应用程序可用的证书,默认值为`*`,表示加载所有证书。 **解决方案步骤:** 1. 在您的代码中设置`WEBSITE_LOAD_CERTIFICATES`参数: ```csharp // Example string certificatePath = @"C:\path\to\your\certificate.pfx"; string certificateThumbprint = "AAC***********************9F63EB"; AppSettings.Configuration["WEBSITE_LOAD_CERTIFICATES"] = certificatePath; ``` 2. 重新构建应用程序运行。 **注意:** * `certificatePath`应该指向您的证书文件路径。 * `certificateThumbprint`应为证书指纹值,例如“AAC***********************9F63EB”。 * 以上代码示例仅供参考,您需要根据实际情况进行修改。

正文

问题描述

在应用中,需要访问另一个服务接口,这个接口需要使用客户端证书进行认证。在代码中使用 System.Security.Cryptography.X509Certificates 加载Window系统中 Current User\My 下的证书。

然后把证书通过App Service门户页面上传。

但是,在访问应用时候,还是报错不能发现证书指纹

Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'CurrentUser', FindType 'FindByThumbprint', FindValue 'AAC***********************9F63EB' 

 

问题分析

根据对官方文档分析,得出一个结论,为了使运行在App Service实例上的应用能够读取到实例(如 Windows)中的证书,必须配置一个应用设置。WEBSITE_LOAD_CERTIFICATES 

  • 如果只有一个证书,就为 WEBSITE_LOAD_CERTIFICATES  设置 证书指纹值。
  • 如果有多个证书,WEBSITE_LOAD_CERTIFICATES  设置为  * 

问题即可解决!

 

 

参考资料

 

与【Azure 应用服务】应用代码中需要使用客户端证书访问服务接口,部署在应用服务后报错不能找到证书(Cannot find the X.509 certificate)相似的内容: