Проблема с проверкой сертификата службы приложений в Azure - PullRequest
0 голосов
/ 23 января 2019

Моя конечная цель - автоматизировать этот процесс в скрипте Python, поэтому я сначала ознакомлюсь с необходимым рабочим процессом на портале Azure.

Шаг 1 - создать сертификат службы приложений. В коде мой звонок: https://management.azure.com/subscriptions/aaaa-bbbb-cccc-dddd/resourceGroups/my-rg/providers/Microsoft.CertificateRegistration/certificateOrders/my-cert-order?api-version=2015-08-01

с полезной нагрузкой:

{
    "location": "global",
    "properties": {
        "productType": "StandardDomainValidatedSsl",
        "autoRenew": true,
        "distinguishedName":"CN=mydomain.com"
    }
}

Шаг 2 - связать его с определенным набором ключей. Опять же, в коде вызов: https://management.azure.com/subscriptions/aaaa-bbbb-cccc-dddd/resourceGroups/my-rg/providers/Microsoft.CertificateRegistration/certificateOrders/my-cert-order/certificates/my-cert?api-version=2015-08-01

с полезной нагрузкой

{
  "location":"global",
  "properties": {
    "keyVaultId":"/subscriptions/aaaa-bbbb-cccc-dddd/resourceGroups/my-rg/providers/Microsoft.KeyVault/vaults/my-keyvault",
    "keyVaultSecretName":"my-secret-name"
  }
}

Шаг 3 - проверить домен, связанный с только что созданным сертификатом. В инструкциях на портале говорится о создании записи TXT в корне моего домена с использованием предоставленного токена подтверждения домена. Я сделал это, но Azure что-то не нравится, так как он никогда не сообщает о проверке сертификата, даже через несколько часов. Я попытался выполнить ручной поиск созданной записи TXT, и теперь она определенно доступна, поэтому я не думаю, что это то, на что жалуется Azure.

Я знаю, что вызов REST, используемый порталом, является владельцем домена-проверки, как описано здесь:

https://docs.microsoft.com/en-us/rest/api/appservice/appservicecertificateorders/verifydomainownership

Я попытался сделать этот вызов явно в коде, и я вижу, что он возвращает ошибку 400, а также следующий BLSON-объект JSON:

{
  "Code": "CertificateResellerWebService_NOT_FOUND_TOKEN",
  "Message": "All remaining domain control tokens were not found",
  "Target": null,
  "Details": [
    {
      "Message": "All remaining domain control tokens were not found"
    },
    {
      "Code": "CertificateResellerWebService_NOT_FOUND_TOKEN"
    },
    {
      "ErrorEntity": null
    }
  ],
  "Innererror": null
}

Является ли токен управления доменом, на который он жалуется, таким же, как токен подтверждения домена? В любом случае, вызов постоянно терпит неудачу с этой же ошибкой. Мне неясно, что является причиной этой проблемы. Любые предложения будут оценены.

Обновление: это основной алгоритм, который я использую для процесса:

token = get_auth_token()
# First, put in a certificate request
cert_order = create_cert_order(token, CERT_NAME)
while cert_order.status_code == 201:
    cert_order = get_cert_order(token, CERT_NAME)
cert_order = cert_order.json()
# Then assign it to a specific key vault
cert = update_cert(token, CERT_NAME, KEY_VAULT_ID, KEY_VAULT_SECRET_NAME)
while cert.status_code == 201:
    cert = get_cert(token, CERT_NAME)
# Next, create a TXT entry in the root domain matching the
# domain verification token and wait for that record to be
# discoverable by nslookup.
domain_verification_token = cert_order["properties"]["domainVerificationToken"]
create_txt_record(domain_verification_token)
waitfor_txt_record(domain_verification_token)
# Finally, ask to have to domain ownersip verified.
response = verify_domain_ownership(token, CERT_NAME)
if response.status_code != 204:
    print("Domain ownership verification failed")

Функции create_cert_order, update_cert и verify_domain_ownership, на которые здесь ссылаются, представляют вызовы REST, о которых я упоминал выше. Я почти уверен, что этот рабочий процесс корректен, но я не знаю, почему последний вызов не удался.

1 Ответ

0 голосов
/ 24 января 2019

Да, должно быть так же. Я могу воспроизвести этот код CertificateResellerWebService_NOT_FOUND_TOKEN на моей стороне, что означает, что проверка домена находится на рассмотрении, но не прошла.

Если вы выбрали ручную проверку. Вы можете обратиться к своему провайдеру DNS, а затем добавить TXT-запись с именем @ и значением проверочный код домена в свой корневой домен . Обратите внимание: если вы добавите подтверждение домена для субдомена, та же запись TXT должна добавить к этому корневому домену вместо субдомена. Строго следуйте этим шагам на портале Azure.

enter image description here

Затем подождите несколько минут для распространения DNS. Если у вас все еще есть вопросы, не стесняйтесь, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...