Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Server | Azure DevOps Server 2022
Cet article explique comment exécuter un agent auto-hébergé avec un certificat auto-signé pour Azure Pipelines et Azure DevOps Server.
Utiliser un certificat de serveur SSL
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.
Le journal de diagnostic de l’agent affiche :
[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
L’erreur de sécurité précédente peut indiquer que la machine de build n’approuve pas le certificat de serveur que vous avez utilisé sur votre ordinateur hôte Azure Devops Server. Veillez à installer votre certificat de serveur SSL auto-signé dans le magasin de certificats du système d’exploitation.
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
Vous pouvez facilement vérifier si le certificat est installé correctement en exécutant quelques commandes. Tant que le handshake SSL se termine correctement (même si vous recevez un code 401 pour la requête), l’installation est réussie.
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)
Si vous ne pouvez pas installer le certificat dans le magasin de certificats de votre ordinateur pour différentes raisons (comme vous n’avez pas les autorisations appropriées ou que vous êtes sur une machine Linux personnalisée), il existe une autre option. L’agent version 2.125.0 ou ultérieure a la possibilité d’ignorer une erreur de validation de certificat de serveur SSL.
Important
Nous vous déconseillons d’ignorer les erreurs de validation de certificat de serveur SSL. Ce n’est pas sûr. Nous vous recommandons vivement d’installer le certificat dans votre magasin de certificats d’ordinateur.
Fournissez --sslskipcertvalidation pendant la configuration de l'agent :
./config.cmd/sh --sslskipcertvalidation
Remarque
Pour utiliser l’indicateur --sslskipcertvalidation sur Linux et macOS, la libcurl bibliothèque sur votre machine Linux ou macOS doit être générée avec OpenSSL.
Problème : la commande Git get sources échoue avec un certificat SSL (agent Windows uniquement)
Nous envoyons git en ligne de commande dans le cadre de l’agent Windows et utilisons cette copie de Git pour toutes les opérations liées à Git. Lorsque vous disposez d’un certificat SSL auto-signé pour votre ordinateur Azure DevOps Server local, configurez git fourni pour autoriser le certificat SSL auto-signé.
Il existe deux façons de résoudre ce problème :
Définissez ce qui suit
git configau niveau global par l’exécution de l’agent en tant qu’utilisateur.git config --global http."https://tfs.com/".sslCAInfo certificate.pemRemarque
La définition d’un niveau
git configsystème n’est pas fiable sur Windows. Le fichier système.gitconfigest stocké avec la copie de Git que nous avons empaquetée. Le Git empaqueté est remplacé chaque fois que l’agent est mis à niveau vers une nouvelle version.Activez Git à utiliser
SChannelpendant la configuration lorsque vous utilisez un agent de version 2.129.0 ou version ultérieure. Passez--gituseschannelpendant la configuration de l’agent../config.cmd --gituseschannelRemarque
Git
SChannela des exigences plus restrictives pour votre certificat auto-signé. Un certificat auto-signé qui génère par une commande IIS (Internet Information Services) ou PowerShell peut ne pas être compatible avecSChannel.
Utiliser un certificat client SSL
IIS a un paramètre SSL qui nécessite que toutes les demandes entrantes adressées au serveur Azure DevOps présentent un certificat client et les informations d’identification régulières.
Lorsque ce paramètre IIS SSL est activé, vous devez utiliser la version 2.125.0 ou ultérieure et effectuer les étapes supplémentaires suivantes pour configurer la machine de build sur votre serveur Azure DevOps.
Préparez toutes les informations de certificat requises :
- Certificat d’autorité de certification au
.pemformat : ce fichier doit contenir la clé publique et la signature du certificat d’autorité de certification. Vous devez placer le certificat d’autorité de certification racine et tous vos certificats d’autorité de certification intermédiaires dans un.pemseul fichier. - Certificat client au
.pemformat : ce fichier doit contenir la clé publique et la signature du certificat client. - Clé privée de certificat client au
.pemformat : ce fichier doit contenir uniquement la clé privée du certificat client. - Package d’archivage de certificat client au
.pfxformat : ce fichier doit contenir la signature, la clé publique et la clé privée du certificat client. - Mot de passe : utilisez le même mot de passe pour protéger la clé privée du certificat client et le package d’archivage de certificat client, car ils ont tous les deux la clé privée du certificat client.
- Certificat d’autorité de certification au
Installez un certificat d'autorité de certification (CA) dans le stockage de certificats de l’ordinateur :
- Linux : Magasin de certificats OpenSSL
- macOS : trousseau système ou utilisateur
- Windows : Magasin de certificats Windows
Passe
--sslcacert,--sslclientcert,--sslclientcertkey.--sslclientcertarchive, et--sslclientcertpasswordpendant la configuration de l’agent..\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"Votre mot de passe de clé privée de certificat client est stocké en toute sécurité sur chaque plateforme.
Linux: Encrypted with a symmetric key based on the machine ID macOS: macOS Keychain Windows: Windows Credential Store
Vérifier la confiance de l’autorité de certification racine
L’agent de build utilise Node.js, qui s’appuie sur son propre magasin de certificats, qui est dérivé des certificats racines approuvés de Mozilla. Le magasin d’autorités de certification Node.js doit approuver tout certificat racine que vous utilisez pour la communication sécurisée. Sinon, vous pouvez recevoir les erreurs suivantes après avoir mis à jour un certificat sur la machine Azure DevOps Server :
- « Impossible d’obtenir le certificat d’émetteur local »
- « SELF_SIGNED_CERT_IN_CHAIN »
- « Impossible de vérifier le premier certificat »
Vous pouvez utiliser le tls.rootCertificates tableau pour vérifier les autorités de certification racines approuvées que vous utilisez pour vérifier les connexions TLS/SSL.
# 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"
La NODE_EXTRA_CA_CERTS variable d’environnement, introduite dans Node v7.3.0, vous permet de spécifier un fichier qui contient un ou plusieurs certificats d’autorité de certification approuvés par Node (en plus du bundle par défaut).
NODE_EXTRA_CA_CERTS ajoute au magasin de confiance.
Sur votre serveur ou autorité de certification, exportez les certificats racine (et tout certificat intermédiaire, le cas échéant) en tant que fichier encodé pem. Ce format est un fichier texte avec
-----BEGIN CERTIFICATE-----et des données Base64. Assurez-vous d’utiliser LE PEM encodé en Base64, et non pas DER. (Sur Windows, .cer fichiers peuvent être l’un ou l’autre ; vous pouvez renommer .pem pour éviter toute confusion. Le fichier peut avoir n’importe quelle extension, mais .pem ou .crt est standard.)Si vous avez plusieurs autorités de certification internes (une chaîne), vous pouvez les concaténer dans un seul fichier. Node lit tous les certificats dans ce fichier.
Rendre le PEM disponible sur l’agent de build en le plaçant dans un chemin connu (par exemple).
C:\certs\CorpRootCA.pem or /etc/ssl/certs/CorpRootCA.pemDéfinissez une variable d’environnement du système d’exploitation,
NODE_EXTRA_CA_CERTSqui pointe vers le fichier PEM. Par exemple, vous pouvez utiliser PowerShell sur Windows :
[Environment]::SetEnvironmentVariable("NODE_EXTRA_CA_CERTS", "C:\certs\CorpRootCA.pem", "Machine")
Contenu connexe
En savoir plus sur la prise en charge des certificats clients de l’agent.