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.
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.
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 in
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.