linux - 将上传到 Azure 门户的 TLS 证书加载到 Linux 应用服务容器中
问题描述
一段时间以来,我们在 Azure 应用服务上运行了一个 ASP.NET Core Web 应用。作为升级到 netcoreapp2.2 的一部分,我们决定将其 Docker 化并在 Linux 容器上运行它,仍然在应用服务中。
此应用程序所做的一件事是加载 TLS 证书以进行令牌签名。以前,此证书已上传到应用服务,应用程序将通过指纹在new X509Store(StoreName.My, StoreLocation.CurrentUser)
. 这可以通过将WEBSITE_LOAD_CERTIFICATES
值设置为证书指纹的配置设置来启用。
在 Linux 容器上尝试了相同的方法后,我们发现证书存储中不存在该证书。
我从今年早些时候在 Github 上发现了这个问题,这表明它在 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);
推荐阅读
- hibernate - 如何在 JPA/Hibernate 中自动向“@OrderBy”映射列插入值?
- jquery - Bootstrap Modal 没有正确褪色
- gradle - com.zaxxer.hikari 检测到线程不足或时钟跳跃
- android - 在 MediaBrowserService.onLoadChildren 中,何时/如何提供选项包?
- php - 我无法在我的 wordpress 上更新/安装插件错误
- c - 如果不使用 const,则在 RAM 中进行不需要的分配,尽管放置在 Flash 绝对地址
- java - Java:如何从块中的 ArrayList 中的目录加载所有文件并处理它
- openedx - open edx中lms admin和cms admin的区别
- pentaho - Pentaho:条形图颜色根据定义的参数
- node.js - Nodejs保存JSON文件