Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Server | Azure DevOps Server 2022
In diesem Artikel wird erläutert, wie Sie einen selbst gehosteten Agent mit einem selbstsignierten Zertifikat für Azure Pipelines und Azure DevOps Server ausführen können.
Arbeiten mit einem 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 Folgendes an:
[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
Der vorherige Sicherheitsfehler weist möglicherweise darauf hin, dass der Buildcomputer dem Serverzertifikat, das Sie auf Ihrem Azure Devops Server-Hostcomputer verwendet haben, nicht vertraut. Stellen Sie sicher, dass Sie Ihr selbstsigniertes SSL-Serverzertifikat im Zertifikatspeicher des Betriebssystems 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 ganz einfach überprüfen, ob das Zertifikat ordnungsgemäß installiert ist, indem Sie einige Befehle ausführen. Solange der SSL-Handshake ordnungsgemäß abgeschlossen ist (auch wenn Sie eine 401 für die Anforderung erhalten), war die Installation erfolgreich.
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 aus verschiedenen Gründen nicht erfolgreich im Zertifikatspeicher Ihres Computers installieren können (z. B. nicht über die richtigen Berechtigungen oder auf einem angepassten Linux-Computer), gibt es eine weitere Option. Die Agentversion 2.125.0 oder höher hat die Möglichkeit, einen SSL-Serverzertifikatüberprüfungsfehler zu ignorieren.
Von Bedeutung
Es wird nicht empfohlen, SSL-Serverzertifikatüberprüfungsfehler zu ignorieren. Es ist nicht sicher. Es wird dringend empfohlen, das Zertifikat in Ihrem Computerzertifikatspeicher zu installieren.
Übergeben Sie --sslskipcertvalidation während der Agentenkonfiguration:
./config.cmd/sh --sslskipcertvalidation
Hinweis
Um die --sslskipcertvalidation Kennzeichnung unter Linux und macOS zu verwenden, muss die libcurl Bibliothek auf Ihrem Linux- oder macOS-Computer mit OpenSSL erstellt werden.
Problem: Der Befehl "Git get sources" schlägt mit einem SSL-Zertifikat fehl (nur Windows-Agent)
Wir versenden Git als Teil des Windows-Agents und verwenden diese Kopie von Git für alle Git-bezogenen Vorgänge. Wenn Sie über ein selbstsigniertes SSL-Zertifikat für Ihren lokalen Azure DevOps Server-Computer verfügen, konfigurieren Sie das ausgelieferte Git so, dass es das selbstsignierte SSL-Zertifikat zulässt.
Es gibt zwei Möglichkeiten, dieses Problem zu lösen:
Legen Sie das Folgende
git configauf globaler Ebene durch den Benutzer, unter dem der Agent läuft, fest.git config --global http."https://tfs.com/".sslCAInfo certificate.pemHinweis
Das Festlegen einer Systemebene
git configist unter Windows nicht zuverlässig. Die Systemdatei.gitconfigwird mit der Kopie von Git gespeichert, die wir verpackt haben. Das verpackte Git wird jedes Mal ersetzt, wenn der Agent auf eine neue Version aktualisiert wird.Aktivieren Sie git für die Verwendung
SChannelwährend der Konfiguration, wenn Sie einen Agent der Version 2.129.0 oder höher verwenden. Übergeben Sie--gituseschannelwährend der Agentkonfiguration../config.cmd --gituseschannelHinweis
Git
SChannelverfügt über restriktivere Anforderungen für Ihr selbstsigniertes Zertifikat. Ein selbstsigniertes Zertifikat, das von einem Iis- oder PowerShell-Befehl generiert wird, ist möglicherweise nicht kompatibel mitSChannel.
Arbeiten mit einem SSL-Clientzertifikat
IIS verfügt über eine SSL-Einstellung, die erfordert, dass alle eingehenden Anforderungen an Azure DevOps Server ein Clientzertifikat und die regulären Anmeldeinformationen darstellen müssen.
Wenn diese IIS-SSL-Einstellung aktiviert ist, müssen Sie Version 2.125.0 oder höher verwenden und die folgenden zusätzlichen Schritte ausführen, um den Buildcomputer für Ihren Azure DevOps Server zu konfigurieren.
Vorbereiten aller erforderlichen Zertifikatinformationen:
- Ein Zertifizierungsstelle-Zertifikat im
.pemFormat: Diese Datei sollte den öffentlichen Schlüssel und die Signatur des Zertifizierungsstellenzertifikats enthalten. Sie müssen das Zertifikat der Stammzertifizierungsstelle und alle Zwischenzertifizierungsstellenzertifikate in eine.pemDatei einfügen. - Ein Clientzertifikat im
.pemFormat: Diese Datei sollte den öffentlichen Schlüssel und die Signatur des Clientzertifikats enthalten. - Ein privater Clientzertifikatschlüssel im
.pemFormat: Diese Datei sollte nur den privaten Schlüssel des Clientzertifikats enthalten. - Ein Clientzertifikatarchivpaket im
.pfxFormat: Diese Datei sollte die Signatur, den öffentlichen Schlüssel und den privaten Schlüssel des Clientzertifikats enthalten. - Kennwort: Verwenden Sie dasselbe Kennwort, um den privaten Clientzertifikatschlüssel und das Clientzertifikatarchivpaket zu schützen, da beide über den privaten Schlüssel des Clientzertifikats verfügen.
- Ein Zertifizierungsstelle-Zertifikat im
Installiere ein Zertifizierungsstellenzertifikat im Zertifikatspeicher des Computers.
- Linux: OpenSSL-Zertifikatspeicher
- macOS: System- oder Benutzerschlüsselbund
- Windows: Windows-Zertifikatspeicher
Übermitteln
--sslcacert,--sslclientcert,--sslclientcertkey.--sslclientcertarchiveund--sslclientcertpasswordwährend der Agentkonfiguration..\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"Ihr Kennwort für private Schlüssel des Clientzertifikats wird sicher auf jeder Plattform gespeichert.
Linux: Encrypted with a symmetric key based on the machine ID macOS: macOS Keychain Windows: Windows Credential Store
Überprüfen der Vertrauensstellung der Stammzertifizierungsstelle
Der Build-Agent verwendet Node.js, der auf seinem eigenen Zertifikatspeicher basiert, der von Mozillas vertrauenswürdigen Stammzertifikaten abgeleitet wird. Der Node.js Zertifizierungsstellenspeicher muss allen Stammzertifikaten vertrauen, die Sie für die sichere Kommunikation verwenden. Andernfalls erhalten Sie möglicherweise die folgenden Fehler, nachdem Sie ein Zertifikat auf dem Azure DevOps Server-Computer aktualisiert haben:
- "Lokales Ausstellerzertifikat kann nicht abgerufen werden"
- "SELF_SIGNED_CERT_IN_CHAIN (Selbstsigniertes Zertifikat in der Kette)"
- "Das erste Zertifikat kann nicht überprüft werden"
Sie können das tls.rootCertificates Array verwenden, um vertrauenswürdige Stamm-CAs zu überprüfen, die Sie zum Überprüfen von TLS-/SSL-Verbindungen verwenden.
# 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"
Mit der NODE_EXTRA_CA_CERTS in Node v7.3.0 eingeführten Umgebungsvariable können Sie eine Datei angeben, die mindestens ein Zertifizierungsstellenzertifikat enthält, dem Node vertraut (zusätzlich zum Standardbundle).
NODE_EXTRA_CA_CERTS fügt an den Vertrauensspeicher an.
Exportieren Sie auf Dem Server oder der Zertifizierungsstelle die Stammzertifikate (und ggf. alle Zwischenzertifikate) als PEM-codierte Datei. Dieses Format ist eine Textdatei mit
-----BEGIN CERTIFICATE-----und Base64-Daten. Stellen Sie sicher, dass Sie Base64-codierte PEM und nicht DER verwenden. (Unter Windows können .cer Dateien beide sein. Sie können in .pem umbenennen, um Verwirrung zu vermeiden. Die Datei kann tatsächlich eine beliebige Erweiterung haben, aber .pem oder .crt ist standard.)Wenn Sie über mehrere interne CAs (eine Kette) verfügen, können Sie sie in eine Datei verketten. Der Knoten liest alle Zertifikate in dieser Datei.
Machen Sie das PEM für den Build-Agent verfügbar, indem Sie es in einen bekannten Pfad setzen (z. B
C:\certs\CorpRootCA.pem or /etc/ssl/certs/CorpRootCA.pem. ).Legen Sie eine Betriebssystemumgebungsvariable fest,
NODE_EXTRA_CA_CERTSdie auf die PEM-Datei verweist. Sie können beispielsweise PowerShell unter Windows verwenden:
[Environment]::SetEnvironmentVariable("NODE_EXTRA_CA_CERTS", "C:\certs\CorpRootCA.pem", "Machine")
Verwandte Inhalte
Erfahren Sie mehr über die Unterstützung des Agent-Clientzertifikats.