Eseguire l'agente con un certificato autofirmato

Azure DevOps Server 2022 - Azure DevOps Server 2019

Questo argomento illustra come eseguire un agente self-hosted con un certificato autofirmato.

Nota

Questo articolo si applica alle versioni dell'agente 2.x e successive.

Usare il certificato del server SSL

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.

Il log di diagnostica dell'agente mostra:

[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

Questo errore può indicare che il certificato del server usato nel server TFS non è considerato attendibile dal computer di compilazione. Assicurarsi di installare il certificato del server SSL autofirmato nell'archivio certificati 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

È possibile verificare facilmente se il certificato è stato installato correttamente eseguendo pochi comandi. Si dovrebbe essere buoni finché l'handshake SSL è terminato correttamente anche si ottiene un 401 per la richiesta.

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)

Se in qualche modo non è possibile installare correttamente il certificato nell'archivio certificati del computer a causa di vari motivi, ad esempio: non si dispone dell'autorizzazione o si è in un computer Linux personalizzato. L'agente versione 2.125.0 o successiva ha la possibilità di ignorare l'errore di convalida del certificato del server SSL.

Importante

Questo non è sicuro e non consigliato, è consigliabile installare il certificato nell'archivio certificati del computer.

Passare --sslskipcertvalidation durante la configurazione dell'agente

./config.cmd/sh --sslskipcertvalidation

Nota

Esiste una limitazione dell'uso di questo flag in Linux e macOS
La libreria libcurl nel computer Linux o macOS deve essere compilata con OpenSSL, altri dettagli

Git get sources ha esito negativo con il problema del certificato SSL (solo agente Windows)

Git della riga di comando viene fornito come parte dell'agente di Windows. Questa copia di Git viene usata per tutte le operazioni correlate a Git. Quando si dispone di un certificato SSL autofirmato per il server TFS locale, assicurarsi di configurare Git fornito per consentire tale certificato SSL autofirmato. Esistono 2 approcci per risolvere il problema.

  1. Impostare la configurazione git seguente a livello globale in base all'esecuzione dell'agente come utente.

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

    Nota

    L'impostazione della configurazione Git a livello di sistema non è affidabile in Windows. Il file .gitconfig di sistema viene archiviato con la copia di Git in pacchetto, che verrà sostituita ogni volta che l'agente viene aggiornato a una nuova versione.

  2. Abilitare Git da usare SChannel durante la configurazione con la versione 2.129.0 o successiva dell'agente pass --gituseschannel durante la configurazione dell'agente

    ./config.cmd --gituseschannel
    

    Nota

    Git SChannel ha un requisito più limitato per il certificato autofirmato. Il certificato self-sing generato da IIS o il comando di PowerShell potrebbe non essere in grado di usare SChannel.

Usare il certificato client SSL

IIS ha un'impostazione SSL che richiede tutte le richieste in ingresso a Azure DevOps Server o TFS deve presentare il certificato client oltre alle credenziali normali.

Quando l'impostazione SSL di IIS è abilitata, è necessario usare 2.125.0 o versione precedente agente e seguire questi passaggi aggiuntivi per configurare il computer di compilazione in base al server Azure DevOps o TFS.

  • Preparare tutte le informazioni necessarie sul certificato

    • Certificati CA in .pem formato (deve contenere la chiave pubblica e la firma del certificato CA, è necessario inserire il certificato ca radice e tutti i certificati ca intermedi in un unico .pem file)
    • Certificato client in .pem formato (deve contenere la chiave pubblica e la firma del certificato client)
    • Chiave privata del certificato client in .pem formato (deve contenere solo la chiave privata del certificato client)
    • Pacchetto di archivio certificati client in .pfx formato (deve contenere la firma, la chiave pubblica e la chiave privata del certificato client)
    • Usare la SAME password per proteggere la chiave privata del certificato client e il pacchetto di archivio certificati client, poiché entrambi hanno la chiave privata del certificato client
  • Installare i certificati CA nell'archivio certificati del computer

    • Linux: Archivio certificati OpenSSL
    • macOS: Portachiavi di sistema o utente
    • Windows: Archivio certificati Windows
  • Passare --sslcacert, --sslclientcert, --sslclientcertkey. --sslclientcertarchive e --sslclientcertpassword durante la configurazione dell'agente.

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

    La password della chiave privata del certificato client viene archiviata in modo sicuro in ogni piattaforma.

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

Altre informazioni sul supporto dei certificati client dell'agente.