es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Problema con REQUESTS_CA_BUNDLE y el comando az login

    • El usuario ha actualizado el archivo C:\Users\xxxx\cacert-with-corp-proxy-cert.pem con el certificado del proxy SSL corporativo.
    • Para confirmar la actualización, el usuario realizó una comprobación utilizando python.exe y el módulo urllib.request especificando el parámetro cafile en la función ssl.create_default_context() como C:\Users\xxxx\cacert-with-corp-proxy-cert.pem, lo cual fue exitoso.
    • Sin embargo, cuando el usuario intenta usar REQUESTS_CA_BUNDLE="C:\Users\xxxx\cacert-with-corp-proxy-cert.pem" con el comando az login, se produce un error de verificación del certificado.
    • El valor de la variable de entorno REQUESTS_CA_BUNDLE es capturado correctamente por el comando az login, como se ha probado con un enlace de archivo ficticio, que devuelve un error de “archivo no encontrado”.
    • Otras variables de entorno como SSL_CERT_FILE, HTTP_PROXY y HTTPS_PROXY también están configuradas correctamente y no causan problemas.

    Solución posible

    • Basado en el mensaje de error, el fallo de verificación del certificado puede deberse a que la CLI de Azure está detrás de un proxy que intercepta el tráfico con un certificado autofirmado.
    • El usuario puede intentar agregar el certificado del proxy SSL corporativo al conjunto de CAs confiables siguiendo los pasos proporcionados en la documentación de Microsoft (https://learn.microsoft.com/cli/azure/use-cli-effectively#work-behind-a-proxy).
    • Si el problema persiste, el usuario puede intentar usar Fiddler como proxy para capturar el tráfico HTTPS y ver los detalles de la negociación SSL / TLS para identificar el problema.
    • Además, el usuario puede intentar usar la bandera --debug con el comando az login para obtener información más detallada sobre el error e identificar la causa raíz del problema.

Comments are closed.