Удаление / повторное связывание сертификата SSL из функции Azure с помощью Azure SDK - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь автоматизировать процесс получения SSL-сертификата на моем портале Azure.Для этого я написал функцию Azure, которая загружает новый сертификат, а затем загружает / привязывает его к моему веб-приложению.Код выглядит следующим образом:

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

, который должен загрузить новый сертификат и создать новую привязку.Он работает, как и ожидалось, в веб-приложении без существующих сертификатов / привязок, но при повторном запуске функции у меня возникают некоторые проблемы:

  1. Новый сертификат не отображается на портале Azure
  2. Привязка остается прежней
  3. Если я вручную удаляю привязку и снова запускаю свой код, она создаст такую ​​же привязку с самым первым сертификатом, который у меня был, то есть снова станет такой же
  4. Забавновещь: я не получаю никакой ошибки

После некоторых исследований я выяснил, что если я перечислю свои сертификаты в Azure Cli с az webapp config ssl list, список на портале будет обновлен, то есть все сертификатыбыли там.Но это не очень помогает.

Мой общий вопрос будет таким: есть ли другой способ связывания сертификата?

Или, в качестве очевидного обходного пути, можно удалить существующую привязку исертификат до него: как можно удалить сертификат SSL в функции Azure с помощью .NET SDK?

1 Ответ

0 голосов
/ 03 сентября 2018

нашел способ.Это нужно сделать в 2 этапа: сначала загрузите сертификат с помощью

        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

...