Запуск az cdn custom-domain enable-https
в домене с уже включенным HTTPS. Результат: внутренняя неверная конфигурация и пара часов простоя, чтобы сначала отключить пользовательский домен, а затем включить его.
Если вы имеете в виду, что вы сделали az cdn custom-domain enable-https
без флага --custom-domain-https-parameters
, , то я полагаю, что это говорит о том, что он должен начать следовать за процессом автоматической сертификации Digicert. По крайней мере, именно это он и сделал для моего домена, когда я попробовал.
FWIW, несмотря на то, что написано в документации, даже самая последняя версия az
не распознает этот флаг (azure-cli (2.0.57)
+ cdn (0.2.0)
, который вы получаете в свежем контейнере azuresdk/azure-cli-python:latest
). Я не уверен, откуда документы получают это. Может не существовать.
Он был добавлен всего 2 месяца назад в .Net SDK, , но еще не в Azure PowerShell Enable-AzCdnCustomDomainHttps
. Я предполагаю, что это может скоро попасть в PS.
Сохранение формы привело к безотказному обновлению сертификата. Хорошо, но с учетом автоматизации и написания сценариев, на самом деле это не тот путь.
Вы можете использовать один из SDK, который поддерживает CustomDomainHttpsParameters
для конечной точки enableCustomHttps
, например .Net SDK, как я уже говорил выше.
Или вы можете напрямую использовать REST API, что я и делаю для своего собственного домена. POST
до https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Cdn/profiles/$cdnProfileName/endpoints/$cdnEndpointName/customDomains/$cdnCustomDomainName/enableCustomHttps?api-version=2018-04-02
с корпусом application/json
, который выглядит как
{
"certificateSource": "AzureKeyVault",
"certificateSourceParameters": {
"@odata.type": "#Microsoft.Azure.Cdn.Models.KeyVaultCertificateSourceParameters",
"deleteRule": "NoAction",
"resourceGroupName": "$resourceGroupName",
"secretName": "$secretName",
"secretVersion": "$secretVersion",
"subscriptionId": "$subscriptionId",
"updateRule": "NoAction",
"vaultName": "$keyVaultName"
},
"protocolType": "ServerNameIndication"
}
$secretVersion
- это то, что было бы другим.
Он следует стандартной семантике REST в том смысле, что возвращает HTTP 202 Accepted
, поскольку это длительная асинхронная операция. Он установит заголовок Location
в резонансе, и вы должны GET
этот URL несколько раз, пока он не преобразуется в код состояния успеха или сбоя.
Обратите внимание, что портал также использует REST API, поэтому вы всегда можете получить его, просто выполнив шаги в пользовательском интерфейсе портала и проверив сетевые запросы в инструментах разработчика вашего браузера. Вам нужно будет получить свой собственный токен oauth2 (создав SP).
В сторону: чтобы сэкономить людям время, которое я потратил на это при попытке сделать это для моего собственного домена, не дайте себя обмануть примером из репозитория API Azure Rest. Этот пример подразумевает версия API 2017-10-12
поддерживает customHttpsParameters
, но на самом деле только 2018-04-02
и более новые поддерживают его. Если вы используете 2017-12-12
, то этот параметр игнорируется, и он пытается использовать автоматический процесс сертификации Digicert.