c# - 如何将该根证书导入为 Azure 应用服务中的受信任根?

标签 c# azure azure-web-app-service azure-webapps azure-appservice

目前我正在开发一个项目,我需要验证证书的 .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 时,出现以下错误:- “链错误:UntrustedRoot 证书链已处理,但在根证书中终止,该根证书不是受到信任提供者的信任。”.

我没有得到的问题在哪里。在我的本地系统中,证书位于受信任的根证书颁发机构中。

如何将该根证书导入为 Azure 中的受信任根?

用例:- 我正在使用 GraphAPI 并且正在为 AAD 应用程序创建客户端证书。因此用户(已授权)将上传证书来创建 AAD 应用程序。所以我需要在将证书推送到 Graph API 之前验证证书是否有效。目前使用 X509Certificate2 来验证证书。因此,不受信任的证书(自签名证书)在应用程序服务中阻止了我。

最佳答案

应用服务前端不会对传入的客户端证书进行任何证书验证。

对于应用服务 Multi-Tenancy PaaS,不支持添加/删除计算机的可信证书存储。目前仅 ASE(应用服务环境)支持添加根 CAS。 ASE -private-client-certificate

应用服务是在 Azure PaaS(平台即服务)基础架构之上运行的服务。应用服务在 sandboxed environment 上运行对底层机器有限制。

在应用服务中,请求的 TLS 终止发生在前端负载均衡器处。在启用客户端证书的情况下将请求转发到应用代码时,应用服务会注入(inject)带有客户端证书的 X-ARR-ClientCert 请求 header 。除了将其转发到您的应用程序之外,应用服务不会对此客户端证书执行任何操作。您的应用代码负责验证客户端证书。

另外,请检查 samples和文档here .

关于c# - 如何将该根证书导入为 Azure 应用服务中的受信任根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69824863/

相关文章:

c# - 将 C# 字符串作为 SELECT WHERE IN 的 SQL 参数传递

c# - "Windows.System.Launcher"不启动写字板

c# - 仅在 Azure Web 应用程序中从 FTP 下载文件失败

azure - Application Insight 最值得推荐的值是多少

c# - 如何定义一个像 'checked' 这样的关键字的属性?

c# - 使用规范模式

azure - 如何处理 Azure Web 应用程序版本控制?

azure - 使用 ARM 模板将包部署到 WebApp 中的特定插槽

iis - 如何授予 ApplicationPoolIdentity 写入应用程序事件日志的权限?

azure - Azure Key Vault 续订证书时,Azure 应用服务是否会自动重新启动?