Adicionando certificado SSL adicional para ser reconhecido no Cygwin

2

Eu tenho uma configuração de servidor que possui um certificado HTTPS emitido por um provedor de certificado principal (DigiCert). O certificado é reconhecido por todos os navegadores em uma máquina que executa o Windows Server 2008 R2, incluindo o Internet Explorer, o Chrome e o Firefox.

No entanto, o certificado não é reconhecido no Cygwin. Por exemplo, eu recebo este erro quando tento clonar um URL git deste servidor:

error: SSL certificate problem: unable to get local issuer certificate while accessing [URL] fatal: HTTP request failed

Outras ferramentas dentro do Cygwin eu tentei dar o mesmo erro, como curl:

curl: (60) SSL certificate problem: unable to get local issuer certificate

O Digicert tem o certificado exato de que preciso. Minhas soluções ideais seriam atualizar o pacote de certificados que o Cygwin usa ou instalar manualmente o certificado necessário. Parece que o Cygwin tem um armazenamento de certificados separado do Windows. Como posso fazer isso?

Nota: Eu não quero simplesmente ignorar o erro, pois muitos usuários usam esta máquina e precisarão acessar o mesmo servidor, então não faria sentido ignorar cada vez.

Jake
fonte
Mas o servidor envia a cadeia de certificados ? Muitos sites esquecem de permitir isso, porque os navegadores da Web armazenam em cache certs intermediários e papéis sobre o problema.
Grawity
O servidor é um que configurei executando o Gitlab Community Edition, que usa o ngnix. Eu posso tentar investigar isso.
Jake
Por favor faça. gnutls-cli <server> -p 443ou ssl-tools.net/webservers são boas maneiras de verificar de fora. Se você tiver o pacote ca-certificates do Cygwin instalado, tenho certeza de que ele usa o pacote Mozilla, que certamente possui o DigiCert.
Grawity
@grawity A resposta foi instalar toda a cadeia de certificados. Apenas notei que nunca segui. Sinta-se à vontade para responder e eu aceito.
Jake

Respostas:

1

Como o seu gitcomando está usando o Curl internamente, tente curl --verbose https://the-repo-URLver o que acontece.

O resultado esperado é o mesmo erro que você relatou: " Problema de certificado SSL: impossível obter certificado de emissor local ". Também na saída detalhada deve haver algo como: * successfully set certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none

O erro e a saída acima são traduzidos como: O certificado X.509 que seu repositório está usando é auto-assinado e não é confiável por Curl ou é emitido por uma autoridade de certificação não confiável pelo Curl. Os locais em que procuramos uma âncora de confiança foram incluídos /etc/pki/tls/certs/ca-bundle.crt, mas não conseguimos encontrar nada aplicável.

Para corrigir isso:

  1. (essa é a parte complicada) Obter o certificado autoassinado ou o certificado raiz da CA de emissão
  2. Armazene o certificado X.509 no formato PEM no diretório /etc/pki/ca-trust/source/anchors
  3. Execute o comando update-ca-trust. Faça isso com permissões de administrador. Observe também que este comando não produz nada.
  4. Feito! Teste.
Jari Turkia
fonte