Eseguire l'agente con un certificato autofirmato
Azure DevOps Server 2022 - Azure DevOps Server 2019
Questo argomento illustra come eseguire un agente self-hosted con un certificato autofirmato.
Nota
Questo articolo si applica alle versioni dell'agente 2.x e successive.
Usare il certificato del server 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.
Il log di diagnostica dell'agente mostra:
[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
Questo errore può indicare che il certificato del server usato nel server TFS non è considerato attendibile dal computer di compilazione. Assicurarsi di installare il certificato del server SSL autofirmato nell'archivio certificati del sistema operativo.
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
È possibile verificare facilmente se il certificato è stato installato correttamente eseguendo pochi comandi. Si dovrebbe essere buoni finché l'handshake SSL è terminato correttamente anche si ottiene un 401 per la richiesta.
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)
Se in qualche modo non è possibile installare correttamente il certificato nell'archivio certificati del computer a causa di vari motivi, ad esempio: non si dispone dell'autorizzazione o si è in un computer Linux personalizzato. L'agente versione 2.125.0 o successiva ha la possibilità di ignorare l'errore di convalida del certificato del server SSL.
Importante
Questo non è sicuro e non consigliato, è consigliabile installare il certificato nell'archivio certificati del computer.
Passare --sslskipcertvalidation
durante la configurazione dell'agente
./config.cmd/sh --sslskipcertvalidation
Nota
Esiste una limitazione dell'uso di questo flag in Linux e macOS
La libreria libcurl nel computer Linux o macOS deve essere compilata con OpenSSL, altri dettagli
Git get sources ha esito negativo con il problema del certificato SSL (solo agente Windows)
Git della riga di comando viene fornito come parte dell'agente di Windows. Questa copia di Git viene usata per tutte le operazioni correlate a Git. Quando si dispone di un certificato SSL autofirmato per il server TFS locale, assicurarsi di configurare Git fornito per consentire tale certificato SSL autofirmato. Esistono 2 approcci per risolvere il problema.
Impostare la configurazione git seguente a livello globale in base all'esecuzione dell'agente come utente.
git config --global http."https://tfs.com/".sslCAInfo certificate.pem
Nota
L'impostazione della configurazione Git a livello di sistema non è affidabile in Windows. Il file .gitconfig di sistema viene archiviato con la copia di Git in pacchetto, che verrà sostituita ogni volta che l'agente viene aggiornato a una nuova versione.
Abilitare Git da usare
SChannel
durante la configurazione con la versione 2.129.0 o successiva dell'agente pass--gituseschannel
durante la configurazione dell'agente./config.cmd --gituseschannel
Nota
Git SChannel ha un requisito più limitato per il certificato autofirmato. Il certificato self-sing generato da IIS o il comando di PowerShell potrebbe non essere in grado di usare SChannel.
Usare il certificato client SSL
IIS ha un'impostazione SSL che richiede tutte le richieste in ingresso a Azure DevOps Server o TFS deve presentare il certificato client oltre alle credenziali normali.
Quando l'impostazione SSL di IIS è abilitata, è necessario usare 2.125.0
o versione precedente agente e seguire questi passaggi aggiuntivi per configurare il computer di compilazione in base al server Azure DevOps o TFS.
Preparare tutte le informazioni necessarie sul certificato
- Certificati CA in
.pem
formato (deve contenere la chiave pubblica e la firma del certificato CA, è necessario inserire il certificato ca radice e tutti i certificati ca intermedi in un unico.pem
file) - Certificato client in
.pem
formato (deve contenere la chiave pubblica e la firma del certificato client) - Chiave privata del certificato client in
.pem
formato (deve contenere solo la chiave privata del certificato client) - Pacchetto di archivio certificati client in
.pfx
formato (deve contenere la firma, la chiave pubblica e la chiave privata del certificato client) - Usare la
SAME
password per proteggere la chiave privata del certificato client e il pacchetto di archivio certificati client, poiché entrambi hanno la chiave privata del certificato client
- Certificati CA in
Installare i certificati CA nell'archivio certificati del computer
- Linux: Archivio certificati OpenSSL
- macOS: Portachiavi di sistema o utente
- Windows: Archivio certificati Windows
Passare
--sslcacert
,--sslclientcert
,--sslclientcertkey
.--sslclientcertarchive
e--sslclientcertpassword
durante la configurazione dell'agente..\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"
La password della chiave privata del certificato client viene archiviata in modo sicuro in ogni piattaforma.
Linux: Encrypted with a symmetric key based on the machine ID macOS: macOS Keychain Windows: Windows Credential Store
Altre informazioni sul supporto dei certificati client dell'agente.