gpt4 book ai didi

c# - 使用 Azure SDK 从 Azure 函数中删除/重新绑定(bind) SSL 证书

转载 作者:行者123 更新时间:2023-12-02 06:30:45 25 4
gpt4 key购买 nike

我正在尝试自动化在我的 Azure 门户上获取 SSL 证书的过程。为此,我编写了一个 Azure 函数,它会下载新证书,然后将其上传/绑定(bind)到我的 Web 应用程序。代码如下所示:

        app.Update()
.DefineSslBinding()
.ForHostname("*.my.domain")
.WithPfxCertificateToUpload(Path.Combine(executionContext.FunctionDirectory, "cert.pfx"), "pwd")
.WithSniBasedSsl()
.Attach()
.Apply();

它应该上传新证书并创建新绑定(bind)。它在没有现有证书/绑定(bind)的网络应用程序上按预期工作,但如果我再次运行该函数,我会遇到一些问题:

  1. 新证书未出现在 Azure 门户中
  2. 绑定(bind)保持不变
  3. 如果我手动删除绑定(bind)并再次运行我的代码,它将使用我拥有的第一个证书创建相同的绑定(bind),即再次变得相同
  4. 有趣的事情:我没有收到任何失败

经过一番研究,我发现如果我使用 az webapp config ssl list 在 azure cli 中列出我的证书,门户上的列表就会更新,即所有证书都在那里。但这并没有多大帮助。

我的一般问题是:还有其他方法重新绑定(bind)证书吗?

或者,一个明显的解决方法是提前删除现有的绑定(bind)和证书:如何使用 .NET SDK 在 azure 函数中删除 SSL 证书?

最佳答案

找到了路。应分两步完成此操作:首先,使用

上传证书
        var certificate = await azure.AppServices.AppServiceCertificates
.Define($"some-name")
.WithRegion(app.Region)
.WithExistingResourceGroup(app.ResourceGroupName)
.WithPfxByteArray(pfxBytes)
.WithPfxPassword("test")
.CreateAsync();

然后使用WithExistingCertificate:

        await app.Update()
.DefineSslBinding()
.ForHostname("*.my.domain")
.WithExistingCertificate(certificate.Thumbprint)
.WithSniBasedSsl()
.Attach()
.ApplyAsync();

有一个待处理的拉取请求,以便在单个调用中执行此操作 https://github.com/Azure/azure-libraries-for-net/pull/208

UPD:PR 已合并,因此您可以简单地使用一个调用,而不是 2 个调用:

var certBytes = certificateService.RetreiveCertificate();
webapp
.Update()
.DefineSslBinding()
.ForHostname("my.hostname")
.WithPfxByteArrayToUpload(certBytes, "password")
.WithSniBasedSsl()
.Attach()
.Apply();

关于c# - 使用 Azure SDK 从 Azure 函数中删除/重新绑定(bind) SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52034206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com