Azure cli detrás de un proxy corporativo no funciona (SSL: NÚMERO_DE_VERSIÓN_INCORRECTO)
Tengo mi archivo C:\\Users\\xxxx\\cacert-with-corp-proxy-cert.pem
actualizado con el certificado del proxy SSL corporativo. Para confirmar que el archivo pem se actualizó correctamente y que los certificados SSL del proxy corporativo son válidos, realicé la verificación con python.exe (Microsoft SDKs\Azure\CLI2\python.exe)
:
import urllib.request
import ssl
import certifi
import requests
url = "https://www.google.com/"
Este funciona:
html = urllib.request.urlopen(url, context=ssl.create_default_context(
cafile="C:\\Users\\xxxx\\cacert-with-corp-proxy-cert.pem"))
Este no funciona (como se esperaba):
html = urllib.request.urlopen(url,context=ssl.create_default_context(
cafile="C:\\Users\\xxxx\\cacert-default.pem"))
Pero, cuando intento usar REQUESTSCABUNDLE=”C:\Users\xxxx\cacert-with-corp-proxy-cert.pem” con el comando az login, veo el siguiente error:
Certificate verification failed. This typically happens when using Azure CLI behind a proxy that intercepts traffic with a self-signed certificate. Please add this certificate to the trusted CA bundle. More info: https://learn.microsoft.com/cli/azure/use-cli-effectively#work-behind-a-proxy. Error detail: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /common/oauth2/token (Caused by SSLError(SSLError(1, '[SSL: WRONG<em>VERSION</em>NUMBER] wrong version number (_ssl.c:1125)')))
El valor de la variable de entorno REQUESTSCABUNDLE se recoge correctamente con el comando az login (probado con un enlace de archivo ficticio y da como resultado un error de “archivo no encontrado”).
Los demás parámetros son los siguientes:
PS C:\Users\xxxx> $env:SSL_CERT_FILE
C:\Users\xxxx\cacert-with-corp-proxy-cert.pem
PS C:\Users\xxxx> $env:REQUESTS_CA_BUNDLE
C:\Users\xxxx\cacert-with-corp-proxy-cert.pem
PS C:\Users\xxxx> az version
{
"azure-cli": "2.29.0",
"azure-cli-core": "2.29.0",
"azure-cli-telemetry": "1.0.6",
"extensions": {}
}
PS C:\Users\xxxx> $env:HTTP_PROXY
http://gate-xxx.xxxxxx.com:8080
PS C:\Users\xxxx> $env:HTTPS_PROXY
https://gate-xxx.xxxxxx.com:9443
davy.ai
Problema con REQUESTS_CA_BUNDLE y el comando az login
C:\Users\xxxx\cacert-with-corp-proxy-cert.pem
con el certificado del proxy SSL corporativo.python.exe
y el módulourllib.request
especificando el parámetrocafile
en la funciónssl.create_default_context()
comoC:\Users\xxxx\cacert-with-corp-proxy-cert.pem
, lo cual fue exitoso.REQUESTS_CA_BUNDLE="C:\Users\xxxx\cacert-with-corp-proxy-cert.pem"
con el comandoaz login
, se produce un error de verificación del certificado.REQUESTS_CA_BUNDLE
es capturado correctamente por el comandoaz login
, como se ha probado con un enlace de archivo ficticio, que devuelve un error de “archivo no encontrado”.SSL_CERT_FILE
,HTTP_PROXY
yHTTPS_PROXY
también están configuradas correctamente y no causan problemas.Solución posible
--debug
con el comandoaz login
para obtener información más detallada sobre el error e identificar la causa raíz del problema.