web-dev-qa-db-ja.com

一部のAzure CLIコマンドでのSSLハンドシェイクエラー

Windows 10のPowerShell内のbashでAzure CLIを使用しています。企業プロキシの背後に座っています。私の目標は、Azureリソースのデプロイとセットアップを自動化することです。

Azure CLIコマンドの一部は完全に正常に機能します。azログインを実行し、デフォルトのサブスクリプションを変更し、場所、リソースグループ、リソースグループ内のリソースを一覧表示し、シェルスクリプトを実行してKey Vaultなどのリソースをデプロイすることもできます。

ただし、Key Vault内のキーまたはシークレットを一覧表示するか、キー/シークレットを作成しようとすると、次のようになります。

リクエストでエラーが発生しました。SSLError:HTTPSConnectionPool(Host = 'xxxxxx.vault.Azure.net'、port = 443):最大再試行回数が次のURLで超過しました:/secrets?api-version=7.0 (SSLError(SSLError( "bad handshake:Error([( 'SSL routines'、 'tls_process_server_certificate'、 'certificate verify failed')]、)"、)、))によって発生します)

ここで提供する例はKey Vaultですが、他のタイプのリソースでも同じエラーが発生するため、Key Vaultに問題があるとは思いません。

コマンドに--debugパラメータを追加すると、エラーがPythonライブラリの1つから発生していることがわかります。

urllib3.connectionpool: 'SSLError(SSLError( "bad handshakeによって切断された接続の後で、再試行(Retry(total = 0、connect = 4、read = 4、redirect = None、status = None))) :エラー([( 'SSL routines'、 'tls_process_server_certificate'、 'certificate verify failed')]、) "、)、) ':/secrets?api-version=7.0

私は以下で提供される提案を試しました:

SSLインターセプトプロキシサーバーの背後でAzure CLIを操作する

export Azure_CLI_DISABLE_CONNECTION_VERIFICATION=anycontentを含めて証明書チェックを無効にし(推奨されません)、export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtを含めてPythonリクエストでシステムca-certificatesバンドルを使用します。

私も試しました:

export ADAL_PYTHON_SSL_NO_VERIFY=1

これは次の投稿で提案されています:

[AzureStack] Python root CA list#2267 にない証明書のSSL検証を処理します

しかし残念ながら、上記のいずれも結果に変化をもたらしませんでした。

Azure CLIバージョン2.0.60とPython 3.を使用しています。

Azure CLIチームに連絡したところ、プロキシの背後で実行されるkeyvaultコマンドに影響するバグがあるようです。

問題の詳細な説明(および潜在的な回避策)を使用して作成した次のgithubの問題を参照してください。

Azure_CLI_DISABLE_CONNECTION_VERIFICATIONはSSL検証に影響しません

上記の問題は、重複しているように見える以下にも関連しています。

Az keyvaultシークレットリスト--vault_name through proxy through is Proxy Authentication Required

この問題は、Azure CLIが実行されているプラ​​ットフォームに関係なく発生するため、環境の問題や環境変数を設定するときの問題ではないことにも言及する価値があります。