Kör agenten med ett självsignerat certifikat

Azure DevOps Server 2022 – Azure DevOps Server 2019

Det här avsnittet beskriver hur du kör en lokalt installerad agent med ett självsignerat certifikat.

Kommentar

Den här artikeln gäller för agentversionerna 2.x och senare.

Arbeta med 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 här felet kan tyda på att det servercertifikat som du använde på TFS-servern inte är betrott av byggdatorn. Se till 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 har installerats korrekt genom att köra några kommandon. Du bör vara bra så länge SSL-handskakningen har slutförts korrekt även om du får en 401 för begäran.

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 på något sätt inte kan installera certifikatet i datorns certifikatarkiv på grund av olika orsaker, till exempel: du har inte behörighet eller om du befinner dig på en anpassad Linux-dator. Agentversion 2.125.0 eller senare har möjlighet att ignorera verifieringsfel för SSL-servercertifikat.

Viktigt!

Detta är inte säkert och rekommenderas inte. Vi rekommenderar starkt att du installerar certifikatet i ditt datorcertifikatarkiv.

Skicka --sslskipcertvalidation under agentkonfigurationen

./config.cmd/sh --sslskipcertvalidation

Kommentar

Det finns en begränsning för att använda den här flaggan i Linux och macOS
Libcurl-biblioteket på din Linux- eller macOS-dator måste skapas med OpenSSL, mer information

Git get-källor misslyckas med SSL-certifikatproblem (endast Windows-agent)

Vi skickar kommandorads-Git som en del av Windows-agenten. Vi 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 TFS-server måste du konfigurera den Git som vi levererade för att tillåta det självsignerade SSL-certifikatet. Det finns två metoder för att lösa problemet.

  1. Ange följande git-konfiguration på global nivå efter agentens körning som användare.

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

    Kommentar

    Att ange Git-konfiguration på systemnivå är inte tillförlitligt i Windows. Systemets .gitconfig-fil lagras med kopian av Git som vi paketerade, som ersätts när agenten uppgraderas till en ny version.

  2. Aktivera git att använda SChannel under konfigurationen med 2.129.0 eller senare versionsagentpass --gituseschannel under agentkonfigurationen

    ./config.cmd --gituseschannel
    

    Kommentar

    Git SChannel har mer begränsade krav för ditt självsignerade certifikat. Självsingat certifikat som genereras av IIS- eller PowerShell-kommandot kanske inte kan använda SChannel.

Arbeta med SSL-klientcertifikat

IIS har en SSL-inställning som kräver alla inkommande begäranden till Azure DevOps Server eller TFS måste presentera klientcertifikat utöver de vanliga autentiseringsuppgifterna.

När IIS SSL-inställningen är aktiverad måste du använda 2.125.0 eller över versionsagenten och följa dessa extra steg för att konfigurera byggdatorn mot din Azure DevOps- eller TFS-server.

  • Förbereda all nödvändig certifikatinformation

    • CA-certifikat i .pem format (Detta bör innehålla den offentliga nyckeln och signaturen för CA-certifikatet, du behöver placera rotcertifikatutfärdarcertifikatet och alla dina mellanliggande ca-certifikat i en .pem fil)
    • Klientcertifikat i .pem format (detta bör innehålla den offentliga nyckeln och signaturen för klientcertifikatet)
    • Privat nyckel för klientcertifikat i .pem format (detta bör endast innehålla den privata nyckeln för klientcertifikatet)
    • Klientcertifikatarkivpaket i .pfx format (detta bör innehålla signaturen, den offentliga nyckeln och den privata nyckeln för klientcertifikatet)
    • Använd SAME lösenord för att skydda klientcertifikatets privata nyckel och klientcertifikatarkivpaketet, eftersom båda har klientcertifikatets privata nyckel
  • Installera CA-certifikat i datorcertifikatarkivet

    • Linux: OpenSSL-certifikatarkiv
    • macOS: System- eller användarnyckelring
    • Windows: Windows-certifikatarkiv
  • Pass --sslcacert, --sslclientcert, --sslclientcertkey. --sslclientcertarchive och --sslclientcertpassword under 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
    

Läs mer om stöd för agentklientcertifikat.