Ошибка рукопожатия SSL с некоторыми командами интерфейса командной строки Azure - PullRequest
2 голосов
/ 02 апреля 2019

Я использую интерфейс командной строки Azure в bash в PowerShell в Windows 10. Я сижу за корпоративным прокси-сервером. Моя цель - автоматизировать развертывание и настройку ресурсов Azure.

Некоторые команды Azure CLI работают отлично: я могу запустить az login, изменить подписку по умолчанию, расположить списки, группы ресурсов, ресурсы в группах ресурсов и даже запустить сценарии оболочки для развертывания таких ресурсов, как хранилища ключей.

Однако, когда я пытаюсь составить список ключей или секретов в хранилище ключей или создать ключи / секреты, я получаю следующее:

Произошла ошибка в запросе., SSLError: HTTPSConnectionPool (host = 'xxxxxx.vault.azure.net', port = 443): превышено максимальное количество попыток с помощью url: /secrets?api-version=7.0 (вызвано SSLError (SSLError («плохое рукопожатие: ошибка ([(« подпрограммы SSL »,« tls_process_server_certificate »,« сбой проверки сертификата »)],)",),))

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

При добавлении параметра --debug к команде я вижу, что ошибка исходит от одной из библиотек Python:

urllib3.connectionpool: Повторная попытка (повторная попытка (всего = 0, подключение = 4, чтение = 4, перенаправление = нет, состояние = нет)) после разрыва соединения с помощью 'SSLError (SSLError ("плохое рукопожатие: ошибка ( [('Подпрограммы SSL', 'tls_process_server_certificate', 'сбой проверки сертификата')],) ",),) ': /secrets?api-version=7.0

Я попробовал предложения, представленные по адресу:

Работа с CLI Azure за прокси-сервером с перехватом SSL ,

Включая export AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=anycontent, чтобы отключить проверку сертификатов (не рекомендуется) и export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt, чтобы заставить запросы Python использовать пакет системных сертификатов.

Я также пробовал:

export ADAL_PYTHON_SSL_NO_VERIFY=1

, что предлагается в следующем посте:

[AzureStack] Обработка проверки SSL для сертификатов, не входящих в список корневых ЦС Python # 2267

Но, к сожалению, ничего из вышеперечисленного не привело к каким-либо изменениям в результате.

Я использую Azure CLI версии 2.0.60 и Python 3.

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Поскольку вы использовали Windows, а не Linux или MacOS, попробуйте использовать set вместо export для установки переменных среды в PowerShell, как показано ниже, а затем снова запустить команду azure cli для Key Vault.

set ADAL_PYTHON_SSL_NO_VERIFY=1
set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1

А для команды export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt в Linux я думаю, что вы можете обратиться к потоку SuperUser https://superuser.com/questions/217719/what-are-the-windows-system-certificate-stores, чтобы запустить окно powershell от имени администратора (щелкните правой кнопкой мыши ярлык PowerShell и выберите Run as administrator для запуска).

Однако, как вы сказали о in bash with PowerShell, звучит так, как будто вы открываете сеанс оболочки bash в Windows Subsystem для Linux или как Git Bash из приглашения PS:, в котором нечетко описывается, чтоЯ не могу понять ваши действия, пожалуйста, опубликуйте более подробную информацию об этом, и я не думаю, что это хорошая практика - использовать PowerShell с вложенным bash.

0 голосов
/ 09 мая 2019

Обратившись в команду azure cli, выясняется, что существует ошибка, которая влияет на команды keyvault, которые выполняются за прокси-сервером.

Обратитесь к следующей проблеме github, которую я создал, с подробным объяснением проблемы (и потенциальным обходным путем):

AZURE_CLI_DISABLE_CONNECTION_VERIFICATION не оказывает никакого влияния на проверку SSL

Данная проблема также связана со следующей информацией, которая представляется дубликатом:

Секретный список ключей Azure --vault_name через прокси-сервер требует проверки подлинности прокси

Стоит также отметить, что эта проблема возникает независимо от платформы, на которой работает azure cli, поэтому она не является проблемой окружающей среды или проблемой при установке переменных среды.

...