Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
I den här artikeln beskrivs hur du kan köra en lokalt installerad agent med ett självsignerat certifikat för Azure Pipelines och Azure DevOps Server.
Arbeta med ett SSL-servercertifikat
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.
Agentdiagnostikloggen visar:
[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
Det tidigare säkerhetsfelet kan tyda på att byggdatorn inte litar på det servercertifikat som du använde på din Azure Devops Server-värddator. Kontrollera att du installerar ditt självsignerade SSL-servercertifikat i OS-certifikatarkivet.
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
Du kan enkelt kontrollera om certifikatet är korrekt installerat genom att köra några kommandon. Så länge SSL-handskakningen slutförs korrekt (även om du får HTTP-statuskod 401 för begäran) var installationen lyckad.
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)
Om du inte kan installera certifikatet i datorns certifikatarkiv av olika skäl (till exempel om du inte har rätt behörighet eller om du är på en anpassad Linux-dator) finns det ett annat alternativ. Agentversion 2.125.0 eller senare har möjlighet att ignorera ett verifieringsfel för SSL-servercertifikat.
Viktigt!
Vi rekommenderar inte att du ignorerar verifieringsfel för SSL-servercertifikat. Det är inte säkert. Vi rekommenderar starkt att du installerar certifikatet i ditt datorcertifikatarkiv.
Skicka --sslskipcertvalidation under agentkonfigurationen:
./config.cmd/sh --sslskipcertvalidation
Anmärkning
Om du vill använda --sslskipcertvalidation flaggan i Linux och macOS libcurl måste biblioteket på linux- eller macOS-datorn skapas med OpenSSL.
Problem: Kommandot Git get sources misslyckas med ett SSL-certifikat (endast Windows-agent)
Vi skickar kommandorads-Git som en del av Windows-agenten och använder den här kopian av Git för alla Git-relaterade åtgärder. När du har ett självsignerat SSL-certifikat för din lokala Azure DevOps Server-dator konfigurerar du den levererade Git för att tillåta det självsignerade SSL-certifikatet.
Det finns två sätt att lösa det här problemet:
Ange följande
git configpå global nivå av agentens körning som användare.git config --global http."https://tfs.com/".sslCAInfo certificate.pemAnmärkning
Att ställa in en systemnivå
git configär inte tillförlitligt i Windows. Systemfilen.gitconfiglagras med kopian av Git som vi paketerade. Den paketerade Git ersätts varje gång agenten uppgraderas till en ny version.Aktivera git att använda
SChannelunder konfigurationen när du använder en 2.129.0 eller senare versionsagent. Skicka--gituseschannelunder konfigurationen av agenten../config.cmd --gituseschannelAnmärkning
Git
SChannelhar mer restriktiva krav för ditt självsignerade certifikat. Ett självsignerat certifikat som genereras av ett IIS-kommando (Internet Information Services) eller PowerShell kanske inte är kompatibelt medSChannel.
Arbeta med ett SSL-klientcertifikat
IIS har en SSL-inställning som kräver att alla inkommande begäranden till Azure DevOps Server måste presentera ett klientcertifikat och vanliga autentiseringsuppgifter.
När IIS SSL-inställningen är aktiverad måste du använda version 2.125.0 eller senare och vidta följande extra steg för att konfigurera byggdatorn mot din Azure DevOps Server.
Förbered all nödvändig certifikatinformation:
- Ett certifikatutfärdarcertifikat (CA) i
.pemformat: Den här filen bör innehålla certifikatutfärdarcertifikatets offentliga nyckel och signatur. Du måste placera rot-CA-certifikat och alla mellanliggande CA-certifikat i en.pemfil. - Ett klientcertifikat i
.pemformat: Den här filen ska innehålla den offentliga nyckeln och signaturen för klientcertifikatet. - En privat nyckel för klientcertifikat i
.pemformat: Den här filen ska endast innehålla den privata nyckeln för klientcertifikatet. - Ett klientcertifikatarkivpaket i
.pfxformat: Den här filen ska innehålla signaturen, den offentliga nyckeln och den privata nyckeln för klientcertifikatet. - Lösenord: Använd samma lösenord för att skydda klientcertifikatets privata nyckel och klientcertifikatarkivpaketet, eftersom båda har klientcertifikatets privata nyckel.
- Ett certifikatutfärdarcertifikat (CA) i
Installera ett CA-certifikat i datorcertifikatarkivet:
- Linux: OpenSSL-certifikatarkiv
- macOS: System- eller användarnyckelring
- Windows: Windows-certifikatarkiv
Skicka vidare
--sslcacert,--sslclientcert,--sslclientcertkey.--sslclientcertarchiveoch--sslclientcertpasswordunder agentkonfigurationen..\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"Lösenordet för din privata nyckel för klientcertifikat lagras säkert på varje plattform.
Linux: Encrypted with a symmetric key based on the machine ID macOS: macOS Keychain Windows: Windows Credential Store
Verifiera förtroende för rotcertifikatutfärdaren
Byggagenten använder Node.js, som förlitar sig på sitt eget certifikatarkiv, som härleds från Mozillas betrodda rotcertifikat. Node.js-certifikatlager måste lita på alla rotcertifikat som du använder för säker kommunikation. Annars kan du få följande fel när du har uppdaterat ett certifikat på Azure DevOps Server-datorn:
- "Det går inte att hämta det lokala utfärdarcertifikatet"
- "SELF_SIGNED_CERT_IN_CHAIN"
- "Det går inte att verifiera det första certifikatet"
Du kan använda arrayen tls.rootCertificates för att verifiera betrodda rot-CA:er som du använder för att verifiera TLS/SSL-anslutningar.
# 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"
Miljövariabeln NODE_EXTRA_CA_CERTS , som introducerades i Node v7.3.0, gör att du kan ange en fil som innehåller ett eller flera CA-certifikat som Node litar på (utöver standardpaketet).
NODE_EXTRA_CA_CERTS lägger till i betroendebutiken.
Exportera rotcertifikatet (och eventuella mellanliggande certifikat, om det behövs) som en PEM-kodad fil på din server eller CA. Det här formatet är en textfil med
-----BEGIN CERTIFICATE-----och Base64-data. Kontrollera att du använder Base64-kodad PEM och inte DER. (I Windows kan .cer filer vara antingen. Du kan byta namn till .pem för att undvika förvirring. Filen kan faktiskt ha valfritt tillägg, men .pem eller .crt är standard.)Om du har flera interna certifikatutfärdare (en kedja) kan du sammanfoga dem till en fil. Noden läser alla certifikat i filen.
Gör PEM tillgängligt på byggagenten genom att placera den i en känd sökväg (till exempel
C:\certs\CorpRootCA.pem or /etc/ssl/certs/CorpRootCA.pem).Ange en os-miljövariabel,
NODE_EXTRA_CA_CERTS, som pekar på PEM-filen. Du kan till exempel använda PowerShell i Windows:
[Environment]::SetEnvironmentVariable("NODE_EXTRA_CA_CERTS", "C:\certs\CorpRootCA.pem", "Machine")
Relaterat innehåll
Läs mer om stöd för agentklientcertifikat.