Führen Sie den Agent mit einem selbst signierten Zertifikat aus

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

In diesem Thema wird erläutert, wie Sie einen selbst gehosteten v2-Agent mit selbst signiertem Zertifikat ausführen.

Arbeiten mit SSL-Serverzertifikat

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.

Das Agent-Diagnoseprotokoll zeigt:

[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

Dieser Fehler kann darauf hinweisen, dass das serverbasierte Zertifikat, das Sie auf Ihrem TFS-Server verwendet haben, nicht vom Buildcomputer vertrauenswürdig ist. Stellen Sie sicher, dass Sie Ihr selbst signiertes SSL-Serverzertifikat im Betriebssystemzertifikatspeicher installieren.

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

Sie können einfach überprüfen, ob das Zertifikat ordnungsgemäß installiert wurde, indem Sie wenige Befehle ausführen. Sie sollten gut sein, solange SSL-Handshake richtig abgeschlossen ist, auch wenn Sie eine 401 für die Anforderung erhalten.

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)

Wenn Sie das Zertifikat aufgrund verschiedener Gründe nicht erfolgreich in den Zertifikatspeicher Ihres Computers installieren können, z. B. : Sie haben keine Berechtigung oder sind auf einem angepassten Linux-Computer. Der Agent version 2.125.0 oder höher hat die Möglichkeit, SSL-Serverzertifikatüberprüfungsfehler zu ignorieren.

Wichtig

Dies ist nicht sicher und nicht empfohlen, wir empfehlen Ihnen, das Zertifikat im Computerzertifikatspeicher zu installieren.

Übergeben --sslskipcertvalidation während der Agentkonfiguration

./config.cmd/sh --sslskipcertvalidation

Hinweis

Es gibt Einschränkungen bei der Verwendung dieses Flags unter Linux und macOS
Die libcurl-Bibliothek auf Ihrem Linux- oder macOS-Computer muss mit OpenSSL, Weitere Details erstellt werden.

Git get sources fails with SSL certificate problem (Windows agent only)

Wir senden Befehlszeilen-Git als Teil des Windows-Agents. Wir verwenden diese Kopie von Git für alle zugehörigen Git-Vorgänge. Wenn Sie über ein selbst signiertes SSL-Zertifikat für Ihren lokalen TFS-Server verfügen, stellen Sie sicher, dass die Git konfiguriert wird, die wir geliefert haben, um dieses selbst signierte SSL-Zertifikat zu ermöglichen. Es gibt 2 Ansätze zur Lösung des Problems.

  1. Legen Sie die folgende Git-Konfiguration auf globaler Ebene durch die Ausführung des Agents als Benutzer fest.

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

    Hinweis

    Das Festlegen der Git-Konfiguration auf Systemebene ist für Windows nicht zuverlässig. Die Datei "system .gitconfig" wird mit der Kopie von Git gespeichert, die ersetzt wird, wenn der Agent auf eine neue Version aktualisiert wird.

  2. Aktivieren von Git zum Verwenden von SChannel während der Konfiguration mit 2.129.0 oder höherer Version agent Pass --gituseschannel während der Agentkonfiguration

    ./config.cmd --gituseschannel
    

    Hinweis

    Git SChannel hat mehr Einschränkungsanforderungen für Ihr selbst signiertes Zertifikat. Selbstsenden Zertifikat, das von IIS oder PowerShell generiert wurde, können möglicherweise nicht mit SChanel ausgeführt werden.

Arbeiten mit SSL-Clientzertifikat

IIS verfügt über eine SSL-Einstellung, die alle eingehenden Anforderungen an TFS erfordert, muss das Clientzertifikat zusätzlich zu den regulären Anmeldeinformationen präsentieren.

Wenn diese IIS-SSL-Einstellung aktiviert ist, müssen Sie den Versions-Agent verwenden oder oben verwenden 2.125.0 und diese zusätzlichen Schritte ausführen, um den Buildcomputer für Ihren TFS-Server zu konfigurieren.

  • Vorbereiten aller erforderlichen Zertifikatinformationen

    • Zertifizierungszertifikate im .pem Format (Dies sollte den öffentlichen Schlüssel und die Signatur des Zertifizierungsstelle-Zertifikats enthalten, sie müssen das Stammzertifikat und alle Ihre Zwischenzertifikate in eine .pem Datei einfügen)
    • Clientzertifikat im .pem Format (Dies sollte den öffentlichen Schlüssel und die Signatur des Clientzertifikats enthalten)
    • Clientzertifikat privater Schlüssel im .pem Format (Dies sollte nur den privaten Schlüssel des Clientzertifikats enthalten)
    • Clientzertifikatarchivpaket im .pfx Format (Dies sollte die Signatur, den öffentlichen Schlüssel und den privaten Schlüssel des Clientzertifikats enthalten)
    • Verwenden Sie SAME das Kennwort zum Schützen des privaten Clientschlüssels und des Clientzertifikatarchivpakets, da beide über den privaten Schlüssel des Clientzertifikats verfügen.
  • Installieren von ZERTIFIZIERUNGszertifikaten in den Computerzertifikatspeicher

    • Linux: OpenSSL-Zertifikatspeicher
    • macOS: System- oder Benutzerschlüsselkette
    • Windows: Windows Zertifikatspeicher
  • Übergeben--sslcacert, , --sslclientcertkey--sslclientcert. --sslclientcertarchive und --sslclientcertpassword während der Agentkonfiguration.

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

    Ihr Clientzertifikat-private Schlüsselkennwort wird sicher auf jeder Plattform gespeichert.

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

Erfahren Sie mehr über die Unterstützung des Agent-Clientzertifikats.