Иногда ZScaler может сильно досаждать, и недавно у меня случился именно такой случай. Эта заметка описывает шаги, необходимые для того, чтобы Azure CLI начал сотрудничать с ZScaler.

Я столкнулся с ошибкой в Azure CLI, которая выдала мне следующее сообщение:

Error message image

Это говорит о том, что Azure CLI не удаётся проверить сертификат для login.microsoftonline.com. У меня было подозрение, что виноват ZScaler, выступающий в роли посредника и подменяющий сертификаты для инспекции HTTPS-трафика. Однако здесь нас интересует именно процесс решения этой проблемы.

Сообщение об ошибке указывает на руководство Microsoft, которое оказывается полезным лишь частично. В нём говорится о PEM-файле, который Azure CLI использует для доверенных сертификатов. Мы можем скопировать этот файл, добавить в него дополнительные сертификаты и указать переменную окружения REQUESTS_CA_BUNDLE, которая будет ссылаться на новый файл, чтобы Azure CLI смог его найти и использовать. Необходимо включить цепочку промежуточных сертификатов ZScaler в наш список.

Где взять эти сертификаты? Это проще, чем кажется. Вам понадобится openssl. Для пользователей Windows можно установить его через winget вот так:

winget install FireDaemon.OpenSSL

Затем просто запрашиваем openssl получить сертификаты с нужного адреса:

& 'C:\Program Files\FireDaemon OpenSSL 3\bin\openssl.exe' s_client -connect login.microsoftonline.com:443 -showcerts

В результате вы увидите что-то вроде следующего вывода:

OpenSSL output image

Появится цепочка сертификатов. Сначала — для x.microsoftonline.com, затем несколько промежуточных сертификатов от ZScaler, и в конце — корневой сертификат ZScaler. Все эти сертификаты нужно вставить в PEM-файл, который мы скопировали ранее. Я просто вставил все три сертификата. Убедитесь, что включили всё между метками BEGIN CERTIFICATE и END CERTIFICATE.

Заключительный шаг касается корневого сертификата, упомянутого в нижней части вывода. Именно он подписывает всю цепочку, поэтому его нужно извлечь, сохранить с расширением .cer, а затем открыть. Откроется окно, где отображается путь сертификации, с корневым сертификатом наверху. Его нужно экспортировать в формате BASE64 и вставить также в PEM-файл. После этого у вас будет полная цепочка.

Certificate export image

После всех этих изменений Azure CLI должен начать работать без проблем с проверкой сертификатов.