Executar o agente com um certificado autoassinado
Azure DevOps Server 2022 – Azure DevOps Server 2019
Este tópico explica como executar um agente auto-hospedado com um certificado autoassinado.
Observação
Este artigo se aplica às versões do agente 2.x e mais recentes.
Trabalhar com o certificado do servidor 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.
O log de diagnóstico do 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
Esse erro pode indicar que o certificado do servidor usado no servidor TFS não é confiável para o computador de build. Instale o certificado do servidor SSL autoassinado no repositório de certificados do sistema operacional.
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
Você pode verificar facilmente se o certificado foi instalado corretamente executando alguns comandos. Tudo estará bem se o handshake SSL for concluído corretamente, mesmo que você obtenha um 401 para a solicitação.
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 não conseguir instalar o certificado no repositório de certificados do computador, os motivos poderão ser: você não tem permissão ou está em um computador Linux personalizado. A versão do agente 2.125.0 ou superior ignora o erro de validação de certificado do servidor SSL.
Importante
Isso não é seguro e não é recomendado. Sugerimos que você instale o certificado no repositório de certificados do computador.
Passar --sslskipcertvalidation
durante a configuração do agente
./config.cmd/sh --sslskipcertvalidation
Observação
Há um limite de uso desse sinalizador no Linux e no macOS
A biblioteca libcurl no computador Linux ou macOS precisa ser criada com OpenSSL. Saiba mais.
As fontes de obtenção do Git falham com o problema de certificado SSL (somente agente do Windows)
Enviamos o Git de linha de comando como parte do agente do Windows. Usamos essa cópia do Git para todas as operações relacionadas a ele. Quando você tiver um certificado SSL autoassinado para o servidor TFS local, configure o Git que enviamos para permitir esse certificado SSL autoassinado. Há duas abordagens para resolver o problema.
Defina a configuração do Git a seguir no nível global executando o agente como usuário.
git config --global http."https://tfs.com/".sslCAInfo certificate.pem
Observação
Definir a configuração do Git no nível do sistema não é confiável no Windows. O arquivo .gitconfig do sistema é armazenado com a cópia do Git que incluímos no pacote, a qual será substituída sempre que o agente for atualizado para uma nova versão.
Habilitar o git para uso
SChannel
durante a configuração com 2.129.0 ou versão superior do agente Pass--gituseschannel
durante a configuração do agente./config.cmd --gituseschannel
Observação
O Git SChannel tem requisitos mais restritos para o certificado autoassinado. Certificado autoidentificado gerado pelo comando IIS ou PowerShell pode não ser possível com SChannel.
Trabalhar com o certificado de cliente SSL
O IIS tem uma configuração SSL que requer que todas as solicitações de entrada para o Servidor de DevOps do Azure ou o TFS deve apresentar certificado de cliente além da credencial regular.
Quando essa configuração SSL do IIS estiver habilitada, você precisará usar 2.125.0
ou a versão do agente acima e seguir estas etapas extras para configurar a máquina de compilação em seu Servidor de DevOps ou TFS do Azure.
Preparar todas as informações de certificado necessárias
- Certificados de autoridade de certificação no
.pem
formato (isso deve conter a chave pública e a assinatura do certificado de autoridade de certificação. Você precisa colocar o certificado de autoridade de certificação raiz e todos os seus certificados de autoridade de certificação intermediários em um arquivo.pem
) - Certificado de cliente no formato
.pem
(deve conter a chave pública e a assinatura do certificado do cliente) - Chave privada do certificado do cliente no formato
.pem
(deve conter apenas a chave privada do certificado do cliente) - Pacote de arquivamento de certificado de cliente no formato
.pfx
(deve conter a assinatura, a chave pública e a chave privada do certificado do cliente) - Use a senha
SAME
para proteger a chave privada do certificado do cliente e o pacote de arquivamento do certificado do cliente, pois ambos têm a chave privada do certificado do cliente
- Certificados de autoridade de certificação no
Instalar certificados de AC no repositório de certificados do computador
- Linux: repositório de certificados OpenSSL
- macOS: keychain do sistema ou do usuário
- Windows: repositório de certificados do Windows
Passar
--sslcacert
,--sslclientcert
e--sslclientcertkey
.--sslclientcertarchive
e--sslclientcertpassword
durante a configuração do agente..\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"
A senha da chave privada do certificado do cliente é armazenada com segurança em cada plataforma.
Linux: Encrypted with a symmetric key based on the machine ID macOS: macOS Keychain Windows: Windows Credential Store
Saiba mais sobre suporte ao certificado do cliente do agente.