使用 Azure SDK 从 Azure 函数中删除/重新绑定 SSL 证书
Remove / rebind SSL certificate from an Azure function using Azure SDK
我正在尝试在我的 Azure 门户上自动执行获取 SSL 证书的过程。为此,我编写了一个 Azure 函数,它下载一个新证书,然后 uploads/binds 它到我的网络应用程序。代码如下所示:
app.Update()
.DefineSslBinding()
.ForHostname("*.my.domain")
.WithPfxCertificateToUpload(Path.Combine(executionContext.FunctionDirectory, "cert.pfx"), "pwd")
.WithSniBasedSsl()
.Attach()
.Apply();
应该上传新证书并创建新绑定。它在不存在 certificates/bindings 的网络应用程序上按预期工作,但如果我再次 运行 该功能,我会遇到一些问题:
- 新证书没有出现在 Azure 门户中
- 绑定保持不变
- 如果我手动删除绑定并再次 运行 我的代码,它将创建与我拥有的第一个证书相同的绑定,即再次变得相同
- 有趣的是:我没有收到任何失败消息
经过一些研究,我发现如果我在 azure cli 中使用 az webapp config ssl list
列出我的证书,门户上的列表会更新,即所有证书都在那里。但这并没有多大帮助。
我的一般问题是:有没有其他方法可以重新绑定证书?
或者,一个明显的解决方法是预先删除现有绑定和证书:如何使用 .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
更新:
PR 已合并,因此您可以简单地使用一个调用而不是 2 个调用:
var certBytes = certificateService.RetreiveCertificate();
webapp
.Update()
.DefineSslBinding()
.ForHostname("my.hostname")
.WithPfxByteArrayToUpload(certBytes, "password")
.WithSniBasedSsl()
.Attach()
.Apply();
我正在尝试在我的 Azure 门户上自动执行获取 SSL 证书的过程。为此,我编写了一个 Azure 函数,它下载一个新证书,然后 uploads/binds 它到我的网络应用程序。代码如下所示:
app.Update()
.DefineSslBinding()
.ForHostname("*.my.domain")
.WithPfxCertificateToUpload(Path.Combine(executionContext.FunctionDirectory, "cert.pfx"), "pwd")
.WithSniBasedSsl()
.Attach()
.Apply();
应该上传新证书并创建新绑定。它在不存在 certificates/bindings 的网络应用程序上按预期工作,但如果我再次 运行 该功能,我会遇到一些问题:
- 新证书没有出现在 Azure 门户中
- 绑定保持不变
- 如果我手动删除绑定并再次 运行 我的代码,它将创建与我拥有的第一个证书相同的绑定,即再次变得相同
- 有趣的是:我没有收到任何失败消息
经过一些研究,我发现如果我在 azure cli 中使用 az webapp config ssl list
列出我的证书,门户上的列表会更新,即所有证书都在那里。但这并没有多大帮助。
我的一般问题是:有没有其他方法可以重新绑定证书?
或者,一个明显的解决方法是预先删除现有绑定和证书:如何使用 .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
更新: PR 已合并,因此您可以简单地使用一个调用而不是 2 个调用:
var certBytes = certificateService.RetreiveCertificate();
webapp
.Update()
.DefineSslBinding()
.ForHostname("my.hostname")
.WithPfxByteArrayToUpload(certBytes, "password")
.WithSniBasedSsl()
.Attach()
.Apply();