【问题标题】:Loading a TLS certificate uploaded to the Azure portal into a Linux app service container将上传到 Azure 门户的 TLS 证书加载到 Linux 应用服务容器中
【发布时间】:2019-06-21 11:17:03
【问题描述】:

一段时间以来,我们一直在 Azure 应用服务上运行 ASP.NET Core Web 应用。作为升级到 netcoreapp2.2 的一部分,我们决定将其 Docker 化并在 Linux 容器上运行它,仍然在应用服务中。

此应用程序所做的一件事是加载 TLS 证书以进行令牌签名。以前,此证书已上传到应用服务,应用程序将通过 new X509Store(StoreName.My, StoreLocation.CurrentUser) 中的指纹找到它。这可以通过添加配置设置WEBSITE_LOAD_CERTIFICATES 来启用,并将值设置为证书的指纹。

在 Linux 容器上尝试了相同的方法后,我们发现证书存储中不存在该证书。

我在今年早些时候发现了this issue on Github,这表明它在 Linux 上是不可能的。现在还是这样吗?如果是这样,是否有人知道不涉及将证书本身存储在图像中的解决方法?

【问题讨论】:

    标签: linux azure asp.net-core containers azure-app-service-plans


    【解决方案1】:

    该功能现在可以在 Linux 上运行。

    Load certificate in Linux apps

    WEBSITE_LOAD_CERTIFICATES 应用设置可让您的 Linux 托管应用(包括自定义容器应用)以文件的形式访问指定的证书。这些文件位于以下目录下:

    • 私有证书 - /var/ssl/private(.p12 文件)
    • 公共证书 - /var/ssl/certs(.der 文件)

    证书文件名是证书指纹。以下 C# 代码展示了如何在 Linux 应用中加载公共证书。

    using System;
    using System.Security.Cryptography.X509Certificates;
    var bytes = System.IO.File.ReadAllBytes("/var/ssl/certs/<thumbprint>.der");
    var cert = new X509Certificate2(bytes);
    

    【讨论】:

    • 我试过了,但这仍然对我不起作用。 /var/ssl/certs/&lt;thumbprint&gt;.der - 路径中的 &lt;thumbprint&gt; 需要替换为我为 WEBSITE_LOAD_CERTIFICATES 提供的证书指纹?
    猜你喜欢
    • 1970-01-01
    • 2019-10-14
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2016-10-20
    • 2021-07-10
    • 2019-02-20
    相关资源
    最近更新 更多