【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)相似的内容: