Ошибка ERR_SSL_UNRECOGNIZED_NAME_ALERT из шлюза приложений Azure с сертификатом SSL в хранилище ключей другой подписки

Я настроил шлюз приложений и хранилище ключей с помощью Terraform. Кажется, что со шлюзом приложений все работает, если я храню сертификат локально, но если я настрою его на использование сертификата из хранилища ключей, а затем перейду на сайт, я получу ошибку ERR_SSL_UNRECOGNIZED_NAME_ALERT, подразумевающую, что прослушиватель отключен. Я видел, как другие сообщали о подобных проблемах (например, Шлюз приложений Azure, как подключиться к SSL-сертификату в другой подписке Azure?); хотя ни один из ответов мне не помог / некоторые уже устарели.

  • Хотя пользовательский интерфейс портала Azure не поддерживает хранилище ключей в другой подписке, сама Azure поддерживает (сопутствующая документация); поэтому я смог установить сертификат через TerraForm.
    • Примечание: я также вручную загрузил сертификат непосредственно в AppGW, используя портал, чтобы доказать, что все работает, когда сертификат был локальным; так оно и было.
    • Примечание 2. Затем я использовал PowerShell, чтобы вернуть значение к использованию Key Vault на случай возникновения какой-либо проблемы с Terraform; но использование PowerShell дало тот же результат (т. е. успешно обновило конфигурацию, но привело к повторному появлению исключения ERR_SSL_UNRECOGNIZED_NAME_ALERT). Set-AzApplicationGatewaySslCertificate -ApplicationGateway $appGw -Name 'wildcard-example-com' -KeyVaultSecretId 'https://myKeyVault.vault.azure.net/secrets/wildcard-example-com/' -Verbose | Set-AzApplicationGateway -Verbose
  • Все ресурсы находятся в одном регионе (UK South).
  • Мой шлюз приложений подключен к виртуальной сети.
    • Эта ассоциация настраивается путем передачи идентификатора подсети в блок шлюз_ip_configuration.
    • Виртуальная сеть подключена к нашему VHub.
    • Существует правило маршрутизации, гарантирующее, что трафик к частным диапазонам IP-адресов направляется через наше встроенное ПО (где мы размещаем правила для внутреннего трафика), в то время как трафик к общедоступным диапазонам идет напрямую в Интернет согласно документам.
    • Не существует правил для блокировки трафика между AppGW и FW (в соответствующих подсетях не настроены NSG, нет правил, которые бы влияли на это в FW; журналы FW не показывают трафик между AppGW и KeyVault (запрещен или нет), однако у нас включено полное ведение журнала).
    • С подсетью связан Microsoft.KeyVault service endpoint
    • Наши внутренние DNS-серверы связаны с виртуальной сетью/они правильно определяют внутренний IP-адрес хранилища ключей (т. е. показывают, что условные серверы пересылки и частные DNS-зоны для хранилища ключей настроены правильно).
  • Мое хранилище ключей подключено к другой виртуальной сети.
    • Хранилище ключей подключено к этой виртуальной сети через частную конечную точку.
    • В хранилище ключей установлены Disable public access и Allow trusted Microsoft services to bypass this firewall.
    • Эта виртуальная сеть также соединена с VHub, при этом весь трафик маршрутизируется через микропрограмму (т. е. подключения к другим виртуальным сетям и из них будут проходить через микропрограмму, а также общедоступный выход; общедоступный вход отсутствует, поскольку он блокируется сетью хранилища ключей). конфигурацию, как указано выше).
  • AppGW имеет управляемое удостоверение, связанное
  • Это управляемое удостоверение настроено в политике доступа к хранилищу ключей с разрешениями get для секретов (фактически, в настоящее время я предоставил все доступные разрешения, просто чтобы не учитывать политики безопасности как потенциальную причину). Примечание: я использую vault access policy; нет RBAC.
  • Путь, используемый в настройке SSL-сертификата шлюза приложений, правильный, т. е. не содержит опечаток, указывает на правильное хранилище ключей, указывает на путь /secrets/ и не включает информацию о версии.

Есть ли что-то, что я пропустил, или могу ли я предпринять какие-либо шаги по отладке, чтобы получить дополнительную информацию о том, почему AppGW не может загрузить этот сертификат из KeyVault?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне позвонили в службу поддержки MS, и они смогли решить мою проблему.

private dns zone, используемый хранилищем ключей, privatelink.vaultcore.azure.net был настроен с виртуальной сетью, в которой находятся мои контроллеры домена; эти контроллеры домена имеют условные DNS-перенаправители для различных зон, включая Virtual Network Links перенаправление запросов на vaultcore.azure.net. Это означает, что когда наши контроллеры домена используются для DNS, они преобразуют ресурсы во внутренний IP-адрес частных конечных точек.

Однако, хотя виртуальная сеть, в которой AppGW правильно настроен для использования наших DNS-серверов и, следовательно, должна использовать внутренний IP-адрес для безопасного подключения к Key Vault, похоже, этого не произошло.

Добавив еще один 168.63.129.16 в нашу зону Virtual Network Link, ориентированный на виртуальную сеть App Gateway, все заработало.

Примечание. Сразу после внесения вышеуказанных изменений все по-прежнему не удалось; Я обнаружил, что запуск privatelink.vaultcore.azure.net заставил AppGW повторить попытку получения сертификата, что позволило ему воспользоваться уже исправленной проблемой. (Я не уверен, важно ли это, но каждый раз, когда я запускал приведенную выше команду, я поочередно включал информацию о порте Set-AzApplicationGatewaySslCertificate -ApplicationGateway $appGw -Name 'wildcard-example-com' -KeyVaultSecretId 'https://myKeyVault.vault.azure.net:443/secrets/wildcard-example-com/' -Verbose | Set-AzApplicationGateway -Verbose, чтобы убедиться, что строка отличается и чтобы изменения были обнаружены.

Надеюсь, это поможет другим в будущем.

Другие вопросы по теме

Похожие вопросы

Вариант контейнера модели публикации веб-приложения Azure не работает с Terraform
Развертывание Docker Compose в Azure
Как использовать токен доступа для создания сеанса клерка?
Не удается загрузить файл в исходную группу Azure Front Door из-за задержки?
Как получить метаданные (список общих файловых ресурсов) учетной записи хранения и настроить действие копирования данных для копирования черно-белых учетных записей хранения в ADF?
Дополнительные файлы (блочные BLOB-объекты), создаваемые при копировании хранилища BLOB-объектов в ADF
Невозможно найти модуль «../server/require-hook» Развертывание веб-приложения Nextjs Azure с помощью действий GitHub
Как очистить определенную папку при развертывании в эту папку с помощью «az webapp Deploy»
Приложение Nuxt 3 развернуто в Azure. Переменные среды игнорируются в разделе nitro файла nuxt.config.ts
SQL позволяет вставлять повторяющиеся данные, когда две вставки выполняются почти одновременно