Ejecución del agente con certificado autofirmado

Azure DevOps Server 2022: Azure DevOps Server 2019

En este tema se explica cómo ejecutar un agente autohospedado con un certificado autofirmado.

Nota:

Este artículo se aplica a las versiones 2.x y posteriores del agente.

Trabajo con certificado SSL de servidor

Enter server URL > https://corp.tfs.com/tfs
Enter authentication type (press enter for Integrated) >
Connecting to server ...
An error occurred while sending the request.

El registro de diagnóstico del agente muestra:

[2017-11-06 20:55:33Z ERR  AgentServer] System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A security error occurred

Este error puede indicar que el certificado de servidor que usó en el servidor TFS no es de confianza para la máquina de compilación. Asegúrese de instalar el certificado SSL de servidor autofirmado en el almacén de certificados del sistema operativo.

Windows: Windows certificate store
Linux: OpenSSL certificate store
macOS: OpenSSL certificate store for agent version 2.124.0 or below
       Keychain for agent version 2.125.0 or above

Para comprobar fácilmente si el certificado se ha instalado correctamente, ejecute algunos comandos. Debe ser así siempre que el protocolo de enlace SSL haya terminado correctamente, incluso si obtiene un 401 para la solicitud.

Windows: PowerShell Invoke-WebRequest -Uri https://corp.tfs.com/tfs -UseDefaultCredentials 
Linux: curl -v https://corp.tfs.com/tfs 
macOS: curl -v https://corp.tfs.com/tfs (agent version 2.124.0 or below, curl needs to be built for OpenSSL)
       curl -v https://corp.tfs.com/tfs (agent version 2.125.0 or above, curl needs to be built for Secure Transport)

Si no puede instalar correctamente el certificado en el almacén de certificados de la máquina, los motivos pueden ser diversos, como que no tiene permisos o está en una máquina Linux personalizada. La versión de agente 2.125.0 o superior tiene la capacidad de omitir el error de validación del certificado SSL de servidor.

Importante

Esto no es seguro y no se recomienda, le recomendamos encarecidamente que instale el certificado en el almacén de certificados de la máquina.

Paso de --sslskipcertvalidation durante la configuración del agente

./config.cmd/sh --sslskipcertvalidation

Nota:

Hay limitaciones para el uso de esta marca en Linux y macOS.
La biblioteca libcurl en la máquina Linux o macOS debe compilarse con OpenSSL, obtenga aquí más detalles.

Error de obtención de orígenes de Git por un problema con el certificado SSL (solo el agente de Windows)

Se incluye Git de línea de comandos como parte del agente de Windows. Usamos esta copia de Git para todas las operaciones relacionadas con Git. Cuando tenga un certificado SSL autofirmado para el servidor TFS local, asegúrese de configurar el Git que hemos enviado para permitir ese certificado SSL autofirmado. Hay dos enfoques para resolver el problema.

  1. Establezca la siguiente configuración de Git en el nivel global por la ejecución del agente como usuario.

    git config --global http."https://tfs.com/".sslCAInfo certificate.pem
    

    Nota:

    El establecimiento de la configuración de Git de nivel de sistema no es confiable en Windows. El archivo .gitconfig del sistema se almacena con la copia de Git empaquetada, que se reemplazará cada vez que el agente se actualice a una nueva versión.

  2. Habilite git para usar SChannel durante la configuración con el agente de la versión 2.129.0 o superior --gituseschannel mientras se configura el agente

    ./config.cmd --gituseschannel
    

    Nota:

    Git SChannel tiene requisitos más restrictivos para su certificado autofirmado. Es posible que el certificado autofirmado generado por el comando IIS o PowerShell no sea compatible con SChannel.

Trabajo con el certificado SSL de cliente

IIS tiene una configuración SSL en la que todas las solicitudes entrantes dirigidas al servidor de Azure DevOps o TFS deben presentar un certificado de cliente además de la credencial normal.

Cuando la configuración SSL de IIS está habilitada, debe usar el agente 2.125.0 o su versión superior y seguir estos pasos adicionales para configurar la máquina de compilación en el servidor de Azure DevOps o TFS.

  • Preparación de toda la información de certificado necesaria

    • Certificados de CA en formato .pem (este debe incluir la clave pública y la firma del certificado de CA y se debe colocar el certificado de CA raíz y todos los certificados de CA intermedios en un archivo .pem)
    • Certificado de cliente en formato .pem (debe incluir la clave pública y la firma del certificado de cliente)
    • Clave privada del certificado de cliente en formato .pem (debe incluir solo la clave privada del certificado de cliente)
    • Paquete de archivo de certificado de cliente en formato .pfx (debe incluir la firma, la clave pública y la clave privada del certificado de cliente)
    • Use la contraseña SAME para proteger la clave privada y el paquete de archivo del certificado de cliente, ya que ambos tienen la clave privada del certificado de cliente.
  • Instalación de certificados de CA en el almacén de certificados de la máquina

    • Linux: almacén de certificados OpenSSL
    • macOS: cadena de claves del sistema o del usuario
    • Windows: almacén de certificados de Windows
  • Pase --sslcacert, --sslclientcert, --sslclientcertkey. --sslclientcertarchive y --sslclientcertpassword durante la configuración del agente.

    .\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"
    

    La contraseña de clave privada del certificado de cliente se almacena de forma segura en cada plataforma.

    Linux: Encrypted with a symmetric key based on the machine ID
    macOS: macOS Keychain
    Windows: Windows Credential Store
    

Obtenga más información sobre la compatibilidad con certificados de cliente del agente.