De agent uitvoeren met een zelfondertekend certificaat

Azure DevOps Server 2022 - Azure DevOps Server 2019

In dit onderwerp wordt uitgelegd hoe u een zelf-hostende agent uitvoert met een zelfondertekend certificaat.

Notitie

Dit artikel is van toepassing op agentversie 2.x en hoger.

Werken met SSL-servercertificaat

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.

Diagnostisch logboek van agent toont:

[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

Deze fout kan aangeven dat het servercertificaat dat u hebt gebruikt op uw TFS-server niet wordt vertrouwd door de buildcomputer. Zorg ervoor dat u uw zelfondertekende SSL-servercertificaat installeert in het certificaatarchief van het besturingssysteem.

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

U kunt eenvoudig controleren of het certificaat correct is geïnstalleerd door enkele opdrachten uit te voeren. U moet goed zijn zolang SSL-handshake correct is voltooid, zelfs als u een 401 voor de aanvraag krijgt.

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)

Als u op een of andere manier het certificaatarchief van uw computer niet kunt installeren vanwege verschillende redenen, zoals: u bent niet gemachtigd of op een aangepaste Linux-computer. De agentversie 2.125.0 of hoger kan ssl-servercertificaatvalidatiefout negeren.

Belangrijk

Dit is niet veilig en wordt niet aanbevolen. We raden u ten zeerste aan het certificaatarchief van uw computer te installeren.

Doorgeven --sslskipcertvalidation tijdens agentconfiguratie

./config.cmd/sh --sslskipcertvalidation

Notitie

Er is een beperking van het gebruik van deze vlag in Linux en macOS
De libcurl-bibliotheek op uw Linux- of macOS-computer moet worden gebouwd met OpenSSL, meer informatie

Git-get-bronnen mislukken met ssl-certificaatprobleem (alleen Windows-agent)

We verzenden opdrachtregel Git als onderdeel van de Windows-agent. We gebruiken deze kopie van Git voor alle git-gerelateerde bewerkingen. Wanneer u een zelfondertekend SSL-certificaat voor uw on-premises TFS-server hebt, moet u ervoor zorgen dat u de Git configureert die we hebben verzonden om dat zelfondertekende SSL-certificaat toe te staan. Er zijn twee benaderingen om het probleem op te lossen.

  1. Stel de volgende Git-configuratie in op globaal niveau door de agent als gebruiker uit te voeren.

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

    Notitie

    Git-configuratie op systeemniveau instellen is niet betrouwbaar in Windows. Het .gitconfig-systeembestand wordt opgeslagen met de kopie van Git die we hebben verpakt. Deze worden vervangen wanneer de agent wordt bijgewerkt naar een nieuwe versie.

  2. Git inschakelen voor gebruik SChannel tijdens de configuratie met agent voor --gituseschannel 2.129.0 of hoger tijdens de agentconfiguratie

    ./config.cmd --gituseschannel
    

    Notitie

    Git SChannel heeft meer beperkingen voor uw zelfondertekende certificaat. Self-singed certificate that generated by IIS or PowerShell command may not be capable with SChannel.

Werken met SSL-clientcertificaat

IIS heeft een SSL-instelling waarvoor alle binnenkomende aanvragen naar Azure DevOps Server of TFS naast de reguliere referentie moeten worden weergegeven.

Wanneer deze IIS SSL-instelling is ingeschakeld, moet u de agent of de bovenstaande versieagent gebruiken 2.125.0 en deze extra stappen volgen om de buildmachine te configureren op basis van uw Azure DevOps- of TFS-server.

  • Alle vereiste certificaatgegevens voorbereiden

    • CA-certificaten in .pem indeling (dit moet de openbare sleutel en handtekening van het CA-certificaat bevatten, u moet het basis-CA-certificaat en al uw tussenliggende ca-certificaten in één .pem bestand plaatsen)
    • Clientcertificaat in .pem indeling (dit moet de openbare sleutel en handtekening van het clientcertificaat bevatten)
    • Persoonlijke sleutel van clientcertificaat in .pem indeling (dit mag alleen de persoonlijke sleutel van het clientcertificaat bevatten)
    • Archiefpakket voor clientcertificaten in .pfx indeling (dit moet de handtekening, de openbare sleutel en de persoonlijke sleutel van het clientcertificaat bevatten)
    • Gebruik SAME een wachtwoord om de persoonlijke sleutel van het clientcertificaat en archiefpakket voor clientcertificaten te beveiligen, omdat beide de persoonlijke sleutel van het clientcertificaat hebben
  • CA-certificaten installeren in het certificaatarchief van de machine

    • Linux: OpenSSL-certificaatarchief
    • macOS: Systeem- of gebruikerssleutelhanger
    • Windows: Windows-certificaatarchief
  • Pass --sslcacert, --sslclientcert, --sslclientcertkey. --sslclientcertarchive en --sslclientcertpassword tijdens de configuratie van de agent.

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

    Het wachtwoord voor de persoonlijke sleutel van uw clientcertificaat wordt veilig opgeslagen op elk platform.

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

Meer informatie over ondersteuning voor agentclientcertificaten.