Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Server | Azure DevOps Server 2022
In dit artikel wordt uitgelegd hoe u een zelf-hostende agent kunt uitvoeren met een zelfondertekend certificaat voor Azure Pipelines en Azure DevOps Server.
Werken met een 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.
In het diagnostische logboek van de agent ziet u:
[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
De vorige beveiligingsfout kan erop wijzen dat de buildcomputer het servercertificaat dat u hebt gebruikt op uw Azure DevOps Server-hostcomputer niet vertrouwt. 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 een paar opdrachten uit te voeren. Zolang de SSL-handshake correct is voltooid (zelfs als u een 401 voor de aanvraag krijgt), is de installatie geslaagd.
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 het certificaat om verschillende redenen niet kunt installeren in het certificaatarchief van uw computer (zoals u niet over de juiste machtigingen beschikt of als u zich op een aangepaste Linux-machine bevindt), is er een andere optie. De agentversie 2.125.0 of hoger kan een validatiefout voor ssl-servercertificaten negeren.
Belangrijk
We raden u niet aan om fouten bij de validatie van SSL-certificaten te negeren. Het is niet veilig. We raden u ten zeerste aan het certificaat in de certificaatopslag van uw apparaat te installeren.
Geef --sslskipcertvalidation door tijdens de agentconfiguratie.
./config.cmd/sh --sslskipcertvalidation
Notitie
Als u de --sslskipcertvalidation vlag wilt gebruiken in Linux en macOS, moet de libcurl bibliotheek op uw Linux- of macOS-computer worden gebouwd met OpenSSL.
Probleem: De opdracht Bronnen ophalen van Git mislukt met een SSL-certificaat (alleen Windows-agent)
We verzenden opdrachtregel Git als onderdeel van de Windows-agent en gebruiken deze kopie van Git voor alle Git-gerelateerde bewerkingen. Wanneer u een zelfondertekend SSL-certificaat voor uw on-premises Azure DevOps Server-computer hebt, configureert u de verzonden Git om het zelfondertekende SSL-certificaat toe te staan.
Er zijn twee manieren om dit probleem op te lossen:
Stel het volgende
git configin op globaal niveau door de agent als gebruiker uit te voeren.git config --global http."https://tfs.com/".sslCAInfo certificate.pemNotitie
Het instellen van een systeemniveau
git configis niet betrouwbaar in Windows. Het systeembestand.gitconfigwordt opgeslagen met de kopie van Git die we hebben verpakt. De verpakte Git wordt vervangen telkens wanneer de agent wordt bijgewerkt naar een nieuwe versie.Stel Git in om
SChannelte gebruiken tijdens de configuratie wanneer u een agent versie 2.129.0 of later gebruikt. Geef--gituseschanneldoor tijdens de configuratie van de agent../config.cmd --gituseschannelNotitie
Git
SChannelheeft meer beperkende vereisten voor uw zelfondertekende certificaat. Een zelfondertekend certificaat dat wordt gegenereerd door een IIS-opdracht (Internet Information Services) of PowerShell-opdracht, is mogelijk niet compatibel metSChannel.
Werken met een SSL-clientcertificaat
IIS heeft een SSL-instelling die vereist dat alle binnenkomende aanvragen naar Azure DevOps Server een clientcertificaat en de reguliere referentie moeten presenteren.
Wanneer deze IIS SSL-instelling is ingeschakeld, moet u versie 2.125.0 of hoger gebruiken en de volgende extra stappen uitvoeren om de buildcomputer te configureren op uw Azure DevOps-server.
Bereid alle vereiste certificaatgegevens voor:
- Een CA-certificaat (certificeringsinstantie) in
.pemindeling: Dit bestand 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.pembestand plaatsen. - Een clientcertificaat in
.pemindeling: dit bestand moet de openbare sleutel en handtekening van het clientcertificaat bevatten. - Een persoonlijke sleutel voor een clientcertificaat in
.pemindeling: dit bestand mag alleen de persoonlijke sleutel van het clientcertificaat bevatten. - Een archiefpakket voor clientcertificaten in
.pfxindeling: dit bestand moet de handtekening, de openbare sleutel en de persoonlijke sleutel van het clientcertificaat bevatten. - Wachtwoord: gebruik hetzelfde wachtwoord om de persoonlijke sleutel van het clientcertificaat en het archiefpakket van het clientcertificaat te beveiligen, omdat ze beide de persoonlijke sleutel van het clientcertificaat hebben.
- Een CA-certificaat (certificeringsinstantie) in
Installeer een CA-certificaat in het certificaatarchief van de machine:
- Linux: OpenSSL-certificaatarchief
- macOS: Systeem- of gebruikerssleutelhanger
- Windows: Windows-certificaatopslag
Geef
--sslcacert,--sslclientcert,--sslclientcertkeydoor.--sslclientcertarchiveen--sslclientcertpasswordtijdens de agentconfiguratie..\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
Vertrouwensrelatie van basiscertificeringsinstantie controleren
De buildagent maakt gebruik van Node.js, die afhankelijk is van het eigen certificaatarchief, dat is afgeleid van de vertrouwde basiscertificaten van Mozilla. Het Node.js archief van de certificeringsinstantie moet elk basiscertificaat vertrouwen dat u gebruikt voor beveiligde communicatie. Anders ontvangt u mogelijk de volgende fouten nadat u een certificaat hebt bijgewerkt op de Azure DevOps Server-computer:
- Kan lokaal certificaat van uitgever niet ophalen
- "SELF_SIGNED_CERT_IN_CHAIN"
- "Kan het eerste certificaat niet verifiëren"
U kunt de tls.rootCertificates matrix gebruiken om vertrouwde basis-CA's te verifiëren die u gebruikt om TLS/SSL-verbindingen te verifiëren.
# Sample script to extract Node.js root certificates using Node.js.
node -e '
const tls = require("tls");
console.log(tls.rootCertificates.join("\n"));
' > "$ROOT_CERTS_FILE"
Met de NODE_EXTRA_CA_CERTS omgevingsvariabele, geïntroduceerd in Node v7.3.0, kunt u een bestand opgeven dat een of meer CA-certificaten bevat die door Node worden vertrouwd (naast de standaardbundel).
NODE_EXTRA_CA_CERTS voegt toe aan de vertrouwenswinkel.
Exporteer op uw server of CA de basiscertificaten (en eventueel tussenliggende indien nodig) als een PEM-gecodeerd bestand. Deze indeling is een tekstbestand met
-----BEGIN CERTIFICATE-----en Base64-gegevens. Zorg ervoor dat u PEM met Base64-codering gebruikt en niet met DER. (Op Windows kunnen .cer-bestanden zowel het één als het ander zijn; u kunt ze naar .pem hernoemen om verwarring te voorkomen. Het bestand kan elke extensie hebben, maar .pem of .crt is standaard.)Als u meerdere interne CA's (een keten) hebt, kunt u deze samenvoegen in één bestand. Knooppunt leest alle certificaten in dat bestand.
Maak de PEM beschikbaar op de buildagent door deze in een bekend pad te plaatsen (bijvoorbeeld
C:\certs\CorpRootCA.pem or /etc/ssl/certs/CorpRootCA.pem).Stel een omgevingsvariabele van het besturingssysteem in,
NODE_EXTRA_CA_CERTSdie verwijst naar het PEM-bestand. U kunt bijvoorbeeld PowerShell in Windows gebruiken:
[Environment]::SetEnvironmentVariable("NODE_EXTRA_CA_CERTS", "C:\certs\CorpRootCA.pem", "Machine")
Verwante inhoud
Meer informatie over de ondersteuning van agentclient-certificaten.