从github自动部署到azure应用程序服务时对二进制文件进行签名

laik7k3q  于 2021-06-20  发布在  Kudu
关注(0)|答案(1)|浏览(284)

我想在通过github(在下面使用kudu)部署到azure应用程序服务时签署我的二进制文件。我知道我可以运行自定义脚本来构建项目。也许我可以使用这个方法在构建过程中对二进制文件进行签名并部署签名的位?我想我可以把我的证书放在azure密钥库中。我怎样才能在不将任何秘密签入github的情况下访问它?
有人有这方面的经验吗?

8wtpewkr

8wtpewkr1#

你走对了方向。自定义部署脚本应执行以下操作:
http://blog.amitapple.com/post/38417491924/azurewebsitecustomdeploymentpart1
https://github.com/projectkudu/kudu/wiki/custom-deployment-script
在kudu,你不会安装azurepowershell,所以你必须从密钥库中提取证书。
更新:azure函数确实安装了azure rm cmdlet。您可以在powershell中编写一个函数应用程序,从密钥库中提取证书。使用服务主体 Login-AzureRmAccount 无人看管。
实现这一点所需的秘密应该保存在应用程序设置中。它们作为环境变量在Kudu向您公开:https://azure.microsoft.com/en-gb/documentation/articles/web-sites-configure/

应用程序设置

此部分包含web应用程序启动时将加载的名称/值对。对于.net应用程序,这些设置将在运行时注入到.net配置appsettings中,并覆盖现有设置。
php、python、java和node应用程序可以在运行时作为环境变量访问这些设置。对于每个应用程序设置,创建两个环境变量;一个名称由app setting条目指定,另一个前缀为appsetting。两者包含相同的值。
或者,您可以从应用服务商店(“我的”商店)中提取证书。方法如下:
从https://azure.microsoft.com/en-us/blog/using-certificates-in-azure-websites-applications/:
添加名为website\u load\u certificates的应用程序设置,并将其值设置为证书的指纹,将使您的web应用程序可以访问该设置。可以有多个逗号分隔的指纹值,也可以将此值设置为*在这种情况下,所有证书都将加载到web应用程序个人证书存储中。

using System;
using System.Security.Cryptography.X509Certificates;

namespace UseCertificateInAzureWebsiteApp
{
  class Program
  {
    static void Main(string[] args)
    {
      X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
      certStore.Open(OpenFlags.ReadOnly);
      X509Certificate2Collection certCollection = certStore.Certificates.Find(
                                 X509FindType.FindByThumbprint,
                                 // Replace below with your cert's thumbprint
                                 “E661583E8FABEF4C0BEF694CBC41C28FB81CD870”,
                                 false);
      // Get the first cert with the thumbprint
      if (certCollection.Count > 0)
      {
        X509Certificate2 cert = certCollection[0];
        // Use certificate
        Console.WriteLine(cert.FriendlyName);
      }
      certStore.Close();
    }
  }
}

没有为您进行证书验证。您需要通过与应用程序设置或密钥库中存储的值进行比较,自己实现这一点。

相关问题