Exécuter l’agent avec un certificat auto-signé
Azure DevOps Server 2022 – Azure DevOps Server 2019
Cette rubrique explique comment exécuter un agent auto-hébergé avec un certificat auto-signé.
Remarque
Cet article s’applique aux versions 2.x et ultérieures de l’agent.
Utiliser le 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
Cette erreur peut indiquer que le certificat de serveur que vous avez utilisé sur votre serveur TFS n’est pas approuvé par l’ordinateur de build. 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 a été installé correctement en exécutant quelques commandes. Vous devriez être bon tant que l’établissement d'une liaison SSL s’est terminé correctement, même si vous obtenez un 401 pour la requête.
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 diverses raisons, par exemple : vous n’avez pas d’autorisation ou vous êtes sur une machine Linux personnalisée. L’agent version 2.125.0 ou ultérieure a la possibilité d’ignorer l’erreur de validation du certificat de serveur SSL.
Important
Cela n’est pas sécurisé et non recommandé, nous vous suggérons vivement d’installer le certificat dans votre magasin de certificats de machine.
Passer --sslskipcertvalidation
pendant la configuration de l’agent
./config.cmd/sh --sslskipcertvalidation
Notes
Il existe une limitation de l’utilisation de cet indicateur sur Linux et macOS
La bibliothèque libcurl sur votre ordinateur Linux ou macOS doit être créée avec OpenSSL, plus de détails
Les sources Git échouent avec le problème de certificat SSL (agent Windows uniquement)
Nous envoyons Git en ligne de commande dans le cadre de l’agent Windows. Nous utilisons cette copie de Git pour toutes les opérations liées à Git. Lorsque vous disposez d’un certificat SSL auto-signé pour votre serveur TFS local, veillez à configurer Git que nous avons expédié pour autoriser ce certificat SSL auto-signé. Il existe 2 approches pour résoudre le problème.
Définissez la configuration Git suivante au niveau global par l’utilisateur exécuté par l’agent.
git config --global http."https://tfs.com/".sslCAInfo certificate.pem
Notes
La définition de la configuration Git au niveau du système n’est pas fiable sur Windows. Le fichier .gitconfig système est stocké avec la copie de Git que nous avons empaquetée, qui sera remplacée chaque fois que l’agent est mis à niveau vers une nouvelle version.
Permettre à git d’utiliser
SChannel
lors de la configuration avec un agent de version 2.129.0 ou supérieure. Passer--gituseschannel
lors de la configuration de l’agent../config.cmd --gituseschannel
Remarque
Git SChannel a une exigence plus restreinte pour votre certificat auto-signé. Le certificat auto-signé généré par IIS ou la commande PowerShell peut ne pas être compatible avec SChannel.
Utiliser le certificat de serveur SSL
IIS possède un paramètre SSL qui exige que toutes les demandes entrantes à Azure DevOps Server ou TFS doivent présenter un certificat client en plus des identifiants habituels.
Lorsque ce paramètre SSL IIS est activé, vous devez utiliser un agent de version 2.125.0
ou supérieure et suivre ces étapes supplémentaires afin de configurer la machine de build contre votre serveur Azure DevOps ou TFS.
Préparer toutes les informations de certificat requises
- Certificat(s) de l’AC au format
.pem
(Cela devrait contenir la clé publique et la signature du certificat de l’AC, vous devez mettre le certificat racine de l’AC et tous vos certificats intermédiaires de l’AC dans un fichier.pem
) - Certificat client au format
.pem
(Cela devrait contenir la clé publique et la signature du certificat client) - Clé privée du certificat client au format
.pem
(Cela devrait contenir uniquement la clé privée du certificat client) - Archive du certificat client au format
.pfx
(Cela devrait contenir la signature, la clé publique et la clé privée du certificat client) - Utilisez
SAME
le 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 deux la clé privée du certificat client
- Certificat(s) de l’AC au format
Installer des certificats d’autorité de certification dans le magasin de certificats de l’ordinateur
- Linux : Magasin de certificats OpenSSL
- macOS : Trousseau système ou utilisateur
- Windows : Magasin de certificats Windows
Passez
--sslcacert
,--sslclientcert
,--sslclientcertkey
.--sslclientcertarchive
et--sslclientcertpassword
pendant 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
En savoir plus sur la prise en charge des certificats clients de l’agent.