Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Azure DevOps Server | Azure DevOps Server 2022
Este artigo explica como você pode executar um agente auto-hospedado com um certificado autoassinado para o Azure Pipelines e o Azure DevOps Server.
Trabalhar com um certificado de 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
O erro de segurança anterior pode indicar que a máquina de compilação não confia no certificado do servidor que você usou na máquina host do Azure Devops Server. Certifique-se de instalar seu certificado de servidor SSL autoassinado no armazenamento 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 está instalado corretamente executando alguns comandos. Desde que o handshake SSL termine corretamente (mesmo que você obtenha um 401 para a solicitação), a instalação foi bem-sucedida.
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 você não conseguir instalar com êxito o certificado no armazenamento de certificados da sua máquina por vários motivos (como não ter as permissões corretas ou estar em uma máquina Linux personalizada), há outra opção. O agente versão 2.125.0 ou superior tem a capacidade de ignorar um erro de validação de certificado de servidor SSL.
Importante
Não recomendamos que ignore os erros de validação do certificado do servidor SSL. Não é seguro. Recomendamos vivamente que instale o certificado no repositório de certificados do sistema.
Passe --sslskipcertvalidation durante a configuração do agente
./config.cmd/sh --sslskipcertvalidation
Observação
Para usar o --sslskipcertvalidation sinalizador no Linux e macOS, a libcurl biblioteca em sua máquina Linux ou macOS deve ser construída com OpenSSL.
Problema: o comando Git get sources falha com um certificado SSL (somente agente do Windows)
Enviamos o Git de linha de comando como parte do agente do Windows e usamos essa cópia do Git para todas as operações relacionadas ao Git. Quando você tiver um certificado SSL autoassinado para sua máquina do Azure DevOps Server local, configure o Git enviado para permitir o certificado SSL autoassinado.
Existem duas formas de resolver este problema:
Defina o seguinte
git configem um nível global pela execução do agente como usuário.git config --global http."https://tfs.com/".sslCAInfo certificate.pemObservação
Definir um nível
git configde sistema não é confiável no Windows. O arquivo de sistema.gitconfigé armazenado com a cópia do Git que empacotamos. O Git empacotado é substituído sempre que o agente é atualizado para uma nova versão.Habilite o git para usar
SChanneldurante a configuração quando você estiver usando um agente de versão 2.129.0 ou posterior. Passe--gituseschanneldurante a configuração do agente../config.cmd --gituseschannelObservação
O Git
SChanneltem requisitos mais restritivos para seu certificado autoassinado. Um certificado autoassinado gerado por um comando do IIS (Serviços de Informações da Internet) ou do PowerShell pode não ser compatível comSChannel.
Trabalhar com um certificado de cliente SSL
O IIS tem uma configuração SSL que requer que todas as solicitações de entrada para o Azure DevOps Server apresentem um certificado de cliente e a credencial regular.
Quando essa configuração SSL do IIS estiver habilitada, você precisará usar a versão 2.125.0 ou mais recente e executar as etapas adicionais a seguir para configurar a máquina de compilação em seu Servidor de DevOps do Azure.
Prepare todas as informações necessárias do certificado:
- Um certificado de autoridade de certificação (CA) no
.pemformato: este arquivo deve conter a chave pública e a assinatura do certificado da autoridade de certificação. Você precisa colocar o certificado CA raiz e todos os certificados CA intermediários em um.pemarquivo. - Um certificado de cliente em
.pemformato: Este arquivo deve conter a chave pública e a assinatura do certificado do cliente. - Uma chave privada de certificado de cliente em
.pemformato: Este arquivo deve conter apenas a chave privada do certificado de cliente. - Um pacote de arquivo de certificado de cliente em formato
.pfx: Este arquivo deve conter a assinatura, a chave pública e a chave privada do certificado do cliente. - Senha: Use a mesma senha para proteger a chave privada do certificado do cliente e o pacote de arquivamento do certificado do cliente, porque ambos têm a chave privada do certificado do cliente.
- Um certificado de autoridade de certificação (CA) no
Instale um certificado CA no repositório de certificados da máquina.
- Linux: armazenamento de certificados OpenSSL
- macOS: Porta-chaves do sistema ou do usuário
- Windows: armazenamento de certificados do Windows
Passe
--sslcacert,--sslclientcert,--sslclientcertkey.--sslclientcertarchive, e--sslclientcertpassworddurante 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
Verificar a confiança da autoridade de certificação raiz
O agente de compilação usa Node.js, que depende do seu próprio repositório de certificados, derivado dos certificados raíz confiáveis da Mozilla. O armazenamento de autoridade de certificação do Node.js deve confiar em qualquer certificado raiz que utilizes para comunicação segura. Caso contrário, você poderá receber os seguintes erros depois de atualizar um certificado na máquina do Azure DevOps Server:
- "Não é possível obter o certificado de emissor local"
- "SELF_SIGNED_CERT_IN_CHAIN"
- "Não é possível verificar o primeiro certificado"
Você pode usar a tls.rootCertificates matriz para verificar CAs raiz confiáveis que você usa para verificar conexões 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"
A NODE_EXTRA_CA_CERTS variável de ambiente, introduzida no Node v7.3.0, permite especificar um arquivo que contém um ou mais certificados de CA nos quais o Node confia (além do pacote padrão).
NODE_EXTRA_CA_CERTS Acrescenta ao repositório de confiança.
Em seu servidor ou CA, exporte os certificados raiz (e quaisquer intermediários, se necessário) como um arquivo codificado em PEM. Este formato é um ficheiro de texto com
-----BEGIN CERTIFICATE-----e dados Base64. Certifique-se de usar o PEM codificado em Base64 e não DER. (No Windows, .cer arquivos podem ser qualquer um; você pode renomear para .pem para evitar confusão. O arquivo pode realmente ter qualquer extensão, mas .pem ou .crt é padrão.)Se tiveres várias autoridades de certificação internas (uma cadeia), poderás concatená-las num único ficheiro. O Node lê todos os certificados nesse ficheiro.
Disponibilize o PEM no agente de compilação colocando-o em um caminho conhecido (por exemplo,
C:\certs\CorpRootCA.pem or /etc/ssl/certs/CorpRootCA.pem).Defina uma variável de ambiente do sistema operacional,
NODE_EXTRA_CA_CERTS, que aponte para o arquivo PEM. Por exemplo, você pode usar o PowerShell no Windows:
[Environment]::SetEnvironmentVariable("NODE_EXTRA_CA_CERTS", "C:\certs\CorpRootCA.pem", "Machine")
Conteúdo relacionado
Saiba mais sobre o suporte a certificados de cliente de agente.