将上传到 Azure 门户的 TLS 证书加载到 Linux 应用服务容器中



一段时间以来,我们在 Azure 应用服务上运行了一个 ASP.NET 核心 Web 应用。作为升级到netcoreapp2.2的一部分,我们决定对其进行Dockerize,并在Linux容器上运行它,仍然在应用程序服务中。

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

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

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

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

在 Linux 应用中加载证书

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);

相关内容

  • 没有找到相关文章

最新更新