【发布时间】:2021-12-17 20:00:09
【问题描述】:
目前我正在做一个项目,我需要验证证书的.cer 版本。对于每笔交易,用户都将上传一个新的.cer 文件。下面是我的代码
public static bool IsValidCert(this MemoryStream cer)
{
using X509Certificate2 cert = new X509Certificate2(cer.ToArray());
return cert.Verify();
}
因此,在本地系统中,证书正在得到正确验证(当前使用自签名证书)。因此,要确保将每个证书添加到下面使用 X509Store 的代码的根目录中
public static bool IsValidCert(this MemoryStream cer)
{
using X509Certificate2 cert = new X509Certificate2(cer.ToArray());
using X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
return cert.Verify();
}
所以它适用于我的本地系统。但是当我将同一段代码推送到 Azure App service 时,出现以下错误:- "Chain error: UntrustedRoot A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider."。
我没有得到的问题在哪里。在我的本地系统中,证书位于受信任的根证书颁发机构中。
如何在 Azure 中将该根证书导入为受信任的根?
用例:- 我正在使用 GraphAPI,并且正在为 AAD 应用程序创建客户端证书。因此用户(已授权)将上传证书以创建 AAD 应用程序。所以我需要在将证书推送到 Graph API 之前验证证书是否有效。目前使用X509Certificate2 来验证证书。所以一个不受信任的证书(自签名证书)在应用服务中阻止了我。
【问题讨论】:
-
由于您已经开始讨论 MS Q&A,在此处发布链接以帮助其他社区成员:How to import that root certificate as trusted root in Azure AppService?
标签: c# azure azure-web-app-service azure-webapps azure-appservice