Certificado SSL rejeitado ao tentar acessar o GitHub sobre HTTPS atrás de firewall

389

Estou preso atrás de um firewall, então tenho que usar HTTPS para acessar meu repositório GitHub. Estou usando o cygwin 1.7.7 no Windows XP.

Tentei configurar o controle remoto para https://[email protected]/username/ExcelANT.git, mas pressionando solicita uma senha, mas não faz nada depois de inseri-la. https://username:<password>github.com/username/ExcelANT.gite clonar o repositório vazio a partir do zero, mas cada vez que ele me dá o mesmo erro

erro: problema com o certificado SSL, verifique se o certificado da CA está OK. Detalhes:
erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE: falha na verificação do certificado ao acessar https://github.com/username/ExcelANT.git/info/refs

Ligar GIT_CURL_VERBOSE=1me dá

* Sobre a conexão () à porta 443 do github.com (# 0)
* Tentativa de 207.97.227.239 ... * definir certificados com êxito para verificar locais:
* CAfile: none
CApath: / usr / ssl / certs
* Problema no certificado SSL, verifique se o certificado da CA está OK. Detalhes:
erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE: falha na verificação do certificado
* Expiração desmarcada
* Fechando a conexão # 0
* Sobre a conexão () à porta 443 do github.com (# 0)
* Tentando 207.97.227.239 ... * definir o certificado com êxito verifique os locais:
* CAfile: none
CApath: / usr / ssl / certs
* Problema no certificado SSL, verifique se o certificado da CA está OK. Detalhes:
erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE: falha na verificação do certificado
* Expiração limpa
* Fechando a conexão # 0
erro: erro no certificado SSL: verifique se o certificado da CA está OK. Detalhes:
erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE: falha na verificação do certificado ao acessar https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

Isso é um problema com meu firewall, cygwin ou o quê?

Eu não havia definido o proxy HTTP na configuração do Git, no entanto, é um servidor ISA que precisa de autenticação NTLM, e não básico, portanto, a menos que alguém saiba como forçar o git a usar o NTLM, sou prejudicado.

oharab
fonte
Se eu definir http.sslVerify false, a conexão será segura? e é um bom caminho para usar? No meio, estamos usando o firewall pfsense. No momento, o arquivo .gitconfig no perfil do usuário está em branco.
Nullpointer

Respostas:

57

Sinta-se à vontade para ignorar esta resposta se desejar corrigir o problema de certificados. Esta resposta lida com o tunelamento ssh através do firewall, que é uma solução melhor para lidar com coisas de firewall / proxy.

Existe uma maneira melhor do que usar o acesso http e usar o serviço ssh oferecido pelo github na porta 443 do servidor ssh.github.com.

Usamos uma ferramenta chamada saca-rolhas. Está disponível para o CygWin (através da configuração da página inicial do cygwin) e para o Linux usando sua ferramenta de empacotamento favorita. Para o MacOSX, está disponível em macports e brew pelo menos.

A linha de comando é a seguinte:

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

O proxyhost e o proxyport são as coordenadas do proxy https. O targethost e o targetport são o local do host para o qual fazer o túnel. O authfile é um arquivo de texto com 1 linha contendo o nome de usuário / senha do servidor proxy separados por dois pontos

por exemplo:

abc:very_secret

Instalação para usar o protocolo ssh "normal" para comunicação git

Ao adicionar isso ao, ~/.ssh/configesse truque pode ser usado para conexões ssh normais.

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

agora você pode testar se funciona ssh-ing para gitproxy

pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$

(Nota: se você nunca fez login no github antes, o ssh solicitará a adição da chave do servidor ao arquivo conhecido dos hosts. Se você é paranóico, recomenda-se verificar a impressão digital RSA àquela mostrada no site do github onde você carregou sua chave).

Uma pequena variação desse método ocorre quando você precisa acessar um repositório com outra chave, por exemplo, para separar sua conta privada da sua conta profissional.

# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

desfrutar!

Estamos usando isso há anos no Linux, Macs e Windows.

Se você quiser, pode ler mais sobre isso neste post do blog

Peter Tillemans
fonte
Eu desisti de fazer isso funcionar, mas dei outra olhada e consegui funcionar. alterar .ssh / config para> Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa e clonar usando git clone o [email protected]:oharab/log4vba.gitcolocou em funcionamento rapidamente.
21411 oharab
11
Estou com uma votação baixa porque a resposta abaixo é mais útil, mas infelizmente o stackoverflow sempre coloca a resposta aceita no topo, mesmo que fosse apenas uma resposta para uma única circunstância.
Mjaggard
11
De qualquer forma, atualizei a resposta, pois acho que o encapsulamento SSL através do proxy https ainda é uma solução melhor do que mexer com certificados HTTPS ou desabilitá-los e acabar com uma solução com menos desempenho, facilidade de uso e menos segurança. Bem, muitas votações provam que estou errado, mas eu mantenho a minha opinião sobre esse assunto de qualquer maneira.
precisa saber é o seguinte
523

O problema é que você não possui nenhum certificado da Autoridade de Certificação instalado no seu sistema. E esses certificados não podem ser instalados com o setup.exe do cygwin.

Atualização: Instale o pacote Net / ca-certificates no cygwin (obrigado dirkjot)

Existem duas soluções:

  1. Instale realmente os certificados raiz. Caras curl extraídos para você certificados da Mozilla .

    cacert.pemarquivo é o que você está procurando. Este arquivo contém> 250 certificados de autoridade de certificação (não sabe como confiar nesse número de pessoas). Você precisa baixar esse arquivo, dividi-lo em certificados individuais, colocá-los em / usr / ssl / certs (seu CApath) e indexá-los.

    Aqui está como fazê-lo. Com o cygwin setup.exe, instale os pacotes curl e openssl:

    $ cd /usr/ssl/certs
    $ curl http://curl.haxx.se/ca/cacert.pem |
      awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
    $ c_rehash

    Importante : Para usar, c_rehashvocê deve instalar openssl-perltambém.

  2. Ignore a verificação do certificado SSL.

    AVISO: Desativar a verificação do certificado SSL tem implicações de segurança. Sem verificar a autenticidade das conexões SSL / HTTPS, um invasor mal-intencionado pode se passar por um terminal confiável (como o GitHub ou algum outro host remoto do Git), e você estará vulnerável a um ataque do tipo intermediário . Certifique-se de entender completamente os problemas de segurança e seu modelo de ameaça antes de usá-lo como uma solução.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
Alexey Vishentsev
fonte
9
Você não precisa instalar onda, apenas wget uso:wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_a fter=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Deebster
38
Eu sei que isso é cygwin, mas no caso de alguém chegar aqui usando Centos, é / etc / pki / tls / certs onde os .pem devem ir.
Pare de caluniar Monica Cellio
2
Não funcionou para mim - no entanto, não tenho c_rehash no meu caminho. Eu tentei reiniciar meu shell. Eu também tive que mkdir -p / usr / ssl / certs. Gostaria de saber se minha instalação do Cygwin é diferente ou está faltando alguma coisa. Além disso, a configuração de GIT_SSL_NO_VERIFY = true seguida da execução da operação de clone resultou neste erro: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?Talvez funcione após a reinicialização?
precisa saber é o seguinte
7
Esta resposta está errada. Basta instalar o ca-certificatespacote cygwin para obter os certificados raiz ausentes. Por que essa resposta teve tantos altos?
rurbano
32
Não desative a verificação de certificado SSL. Isso acontece com muita frequência em ferramentas e códigos de aplicativos em todo o setor. Abre você para um homem no meio do ataque. Se você for usar SSL, use-o corretamente.
Tim
430

Nota: desativar a verificação SSL tem implicações de segurança . Ele permite ataques Man in the Middle quando você usa o Git para transferir dados através de uma rede. Certifique-se de entender completamente as implicações de segurança antes de usar isso como uma solução. Ou melhor ainda, instale os certificados raiz.

Uma maneira é desativar a verificação SSL CERT:

git config --global http.sslVerify false

Isso impedirá que o CURL verifique a certificação HTTPS.

Apenas para um repositório:

git config http.sslVerify false
Yi Zhao
fonte
17
Se você não quiser editar suas configurações globais (por exemplo, todos os repositórios), exclua --global
Erin
57
você poderia adicionar uma observação sobre o quão extremamente perigoso isso é?
Cronial
26
essa é uma péssima ideia. há uma razão para que os certificados sejam verificados. se você não verificar o certificado como confiável, o certificado poderá ser gerado por qualquer pessoa e você poderá ser suscetível a um homem no meio do ataque.
Mark Carey
24
Não desative a verificação SSL!
Tim
14
Para todas as pessoas "não faça isso": com certeza essa não é a abordagem mais segura. MAS, é uma opção muito melhor do que não ter SSL! Como algumas pessoas executam apenas seus servidores git simples privados, isso é bom para eles. Claro, para qualquer segurança real, não é uma configuração GO GO. O mais inseguro é enviar os bytes simples pela rede.
Peter Stegnar
109

Eu queria que o Git usasse o pacote de certificados atualizado sem substituir o que todo o meu sistema usa. Veja como o Git usa um arquivo específico no meu diretório pessoal:

mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

Agora atualize .gitconfigpara usar isso para verificação por pares:

[http]
sslCAinfo = /home/radium/certs/cacert.pem

Note que estou usando um caminho absoluto. O Git não faz expansão de caminho aqui, então você não pode usá-lo ~sem um feio feio. Como alternativa, você pode pular o arquivo de configuração e definir o caminho através da variável de ambiente GIT_SSL_CAINFO.

Para solucionar isso, defina GIT_CURL_VERBOSE=1. O caminho do arquivo CA que o Git está usando será mostrado nas linhas que começam com "CAfile:" na saída.

kenchilada
fonte
12
Para mim, esta é a melhor resposta: funciona em unix (NetBSD, na verdade), afeta apenas o git e não qualquer outra coisa no sistema, e não requer acesso root / administrador. Obrigado!
911 Eric
11
Perfeito, pode-se fazer ainda melhor. Substituí meu antigo /etc/ssl/certs/ca-certificates.crtno meu Ubuntu 8.04 LTS por esse arquivo e ele funcionou magicamente!
24512 Michael-O
11
@ Eric obrigado por mencionar o NetBSD, pois significava que encontrei esta resposta. O NetBSD é um pouco estranho. Eu instalei o pacote OpenSSL, mas mesmo isso não dá a você a certeza, apenas um diretório de espaço reservado.
Atomicules
+200 Mais impressionante, também funcionou na minha caixa do Ubuntu. Não há necessidade de desativar a verificação de certificado no git, basta fazer esta correção rápida.
Colin D Bennett
11
Resposta excelente, você pode pular a edição manual do arquivo ~ / .gitconfig com o seguinte comando:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Aron Ahmadia
41

Observe que, para que eu funcione (instalação do RVM no CentOS 5.6), tive que executar o seguinte:

export GIT_SSL_NO_VERIFY=true

e depois disso, o procedimento de instalação padrão para enrolar o instalador do RVM no bash funcionou bem :)

seanp2k
fonte
13
mesmo efeito que o git config --global http.sslverify false
Dyno Fu
20
Isso é EXTREMAMENTE PERIGOSO! O objetivo principal da verificação do certificado SSL é proteger seu código contra violações quando você o estiver transmitindo por HTTPS! Desabilitar significa que pessoas mal-intencionadas podem inserir vulnerabilidades e outras coisas desagradáveis ​​no seu código à medida que você pressiona e busca!
Se eu definir http.sslVerify false, a conexão será segura? e é um bom caminho para usar? No meio, estamos usando o firewall
pfsense
@Ravi a conexão será tecnicamente o trabalho, sim, mas de forma inequívoca é não uma boa idéia. Se a origem do git e a máquina local são internas e estão sob o controle da sua organização, isso pode ser aceitável , mas, conforme o comentário do usuário456814, desativar a verificação abre a possibilidade de ataques MITM.
Doktor J
40

Uma solução muito simples: substitua https: // por git: //

Use git: //the.repository em vez de https: //the.repository e funcionará.

Eu tive esse problema no Windows com o TortoiseGit e isso resolveu.

Klodoma
fonte
Eu acho que isso funciona porque não verifica o SSL para git://. Conforme declarado nesta resposta acima , desabilitar a verificação SSL é um risco de segurança.
31514 danijar
5
@danijar a razão pela qual isso funciona é porque nem sequer usa SSL . O git://protocolo usa SSH, que usa pares de chaves públicas e privadas SSH para autenticação e criptografia, em vez de um certificado SSL.
11
@Cupcake git://se não usar SSH. Veja O Protocolo SSH e O Protocolo Git .
nyuszika7h
@ nyuszika7h oh, você está certo. Eu fico git://confuso [email protected]:user/project.git, que é a sintaxe SCP-ish .
31

Como a resposta mais popular (de Alexey Vishentsev) tem:

O problema é que você não possui nenhum certificado da Autoridade de Certificação instalado no seu sistema. E esses certificados não podem ser instalados com o setup.exe do cygwin.

No entanto, essa última afirmação é falsa (agora, ou sempre foi, eu não sei).

Tudo o que você precisa fazer é ir para a configuração do cygwin e incluir o pacote 'ca-certificates' (está em Net). Isso fez o truque para mim.

dirkjot
fonte
11
O erro cygwin git mostra CAfile: /etc/ssl/ca-bundle.crtque o pacote cygwin ca-certificates é instalado /usr/ssl/certs/ca-bundle.crt. Portanto, teve que editar ~/.gitconfigpara especificar a localização: [http]em seguidasslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk
@ Maxpolk: Eu teria feito um link, mas o efeito é o mesmo. Isso é claramente um bug no cygwin git, você já pensou em aumentar um ticket? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot
A partir de hoje, 23/05/2013, o cygwin git funciona bem em https: se você tiver / se lembrar de instalar o cygwin's ca-certificates.
bobbogo
Cheguei aqui desta pergunta , que indicava que uma resposta pode ser encontrada aqui. No entanto, nem a resposta vinculada nem esta resposta funcionam para mim; TortoiseSVN mantém outputtingerror: SSL certificate problem, verify that the CA cert is OK.
OU Mapper
Onde exatamente instalamos os arquivos de instalação do cygwin a partir do gerenciador de pacotes? Os certificados ca precisam estar dentro da pasta bin do Git?
221b
16

Eu sei que a pergunta original lista o Cygwin, mas aqui está a solução para o CentOS:

curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Fonte: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/

Herman J. Radtke III
fonte
Isso funcionou muito bem para mim; você provavelmente deve fazer um backup do original primeiro, como sugere o OP. Parece que isso acontece quando o Github renova seu certificado, se você estiver em um sistema com um mais antigo.
Evan Donovan
No CentOS 5, eu o corrigi yum update openssl, o que também atualiza o pacote CA.
raarts
se você seguir esta opção, verifique o hash SHA-256 do arquivo antes de usá-lo. Você pode obter o sha256sum para o arquivo atual por outros meios que não o enrolamento que está configurando (como um navegador em uma máquina diferente que já esteja configurada com segurança) e depois compará-lo com a saída sha256sum /etc/pki/tls/certs/ca-bundle.crtpara garantir que você esteja certo Arquivo.
Kbolino
16

Para clonar no Windows enquanto configura o SSL, verifique como false:

    git -c http.sslVerify=false clone http://example.com/e.git

Se você deseja clonar sem alterar suas configurações globais.

FlavorScape
fonte
14

No CentOS 5.x, um simples yum update opensslpacote atualizado openssl atualizou o ca-bundle.crtarquivo do sistema e corrigiu o problema para mim.

O mesmo pode ser verdade para outras distribuições.

Wayne Walker
fonte
yum! Isso funcionou para mim em uma instalação antiga (4.1.2) do Red Hat Linux. Obrigado!
27413 Josh
13

Se tudo o que você deseja é apenas usar o cliente git Cygwin no github.com, existe uma maneira muito mais simples, sem ter que passar pelo trabalho de baixar, extrair, converter e dividir arquivos cert. Prossiga da seguinte maneira (estou assumindo o Windows XP com Cygwin e Firefox)

  1. No Firefox, vá para a página do github (qualquer)
  2. clique no ícone github na barra de endereço para exibir o certificado
  3. Clique em "mais informações" -> "exibir certificado" -> "detalhes" e selecione cada nó na hierarquia começando com o mais alto; para cada um deles, clique em "Exportar" e selecione o formato PEM:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Salve os arquivos acima em algum lugar da unidade local, altere a extensão para .pem e mova-os para / usr / ssl / certs na instalação do Cygwin (Windows: c: \ cygwin \ ssl \ certs)
  5. (opcional) Execute c_reshash a partir do bash.

É isso aí.

Obviamente, isso instala apenas uma hierarquia de certificados, a que você precisa para o github. Obviamente, você pode usar esse método com qualquer outro site sem a necessidade de instalar 200 certs de sites nos quais não confia (necessariamente).

esquifit
fonte
8

Se você estiver no Mac OS X, poderá instalar o pacote ca-cert-via homebrew:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

A fórmula instala o pacote de certificados no seu compartilhamento via:

share.install 'ca-bundle.crt'

O sharemétodo é apenas um alias para /usr/local/share, e o pacote curl-ca- é fornecido por Mozilla. É o que você vê sendo referenciado em muitos problemas. Espero que isso ajude, pois não é muito claro como abordar isso no Mac OS X. Isso não o ajudarábrew install curl muito, pois é apenas barril e não será vinculado (a execução which curlsempre será gerada /usr/bin/curl, o padrão que é fornecido com o seu computador). OS). Esta postagem também pode ter algum valor .

Obviamente, você precisará desativar o SSL antes de instalar, homebrewpois é um repositório git. Basta fazer o que o curl diz quando ocorrer um erro durante a verificação SSL e:

$ echo insecure >> ~/.curlrc

Depois de homebrewinstalar junto com o curl-ca-bundle, exclua.curlrc e tente clonar um repositório no github. Certifique-se de que não haja erros e você estará pronto.

NOTA: Se você recorrer .curlrc, remova-o do seu sistema no momento em que terminar de testar. Esse arquivo pode causar problemas importantes, portanto, use-o para propósitos temporários e com cuidado. brew doctorreclamará caso você esqueça de removê-lo do seu sistema).

NOTA: Se você atualizar sua versão do git, precisará executar novamente este comando, pois as configurações do sistema serão apagadas (elas são armazenadas em relação ao binário do git com base na versão).

Então, depois de executar:

$ brew update
$ brew upgrade

Se você receber uma nova versão do git, basta executar novamente:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

E você estará pronto.

Por fim, se você possui uma nova versão do git, execute:

$ git config -l --system

deve dar um erro ao longo das linhas de

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

essa é a sua dica que você precisa dizer ao git onde está o pacote CA da Mozilla.

ATUALIZAR:

.curlrcpode ou não ser o remédio para o seu problema. De qualquer forma, basta instalar o pacote CA Mozilla na sua máquina, independentemente de você precisar fazer o download manualmente ou não. Isso é importante aqui. Depois de obter o pacote CA, você estará pronto. Basta executar o comando git config e apontar git para o pacote CA.

ATUALIZAR

Recentemente, tive que adicionar:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crtpara o meu .zshenvarquivo de ponto desde que eu estou usando zsh. a git configopção funcionou na maioria dos casos, mas ao acessar o github sobre SSL ( rvm get stablepor exemplo), eu ainda estava com problemas de certificado. O @Maverick apontou isso em seu comentário, mas caso alguém perca ou assuma que não precisa necessariamente exportar essa variável de ambiente, além de executar ogit config --system.... comando. Obrigado e espero que isso ajude.

ATUALIZAR

Parece que o pacote curl-ca- foi removido recentemente do homebrew . Há uma recomendação aqui .

Você deseja soltar alguns arquivos em:

$(brew --prefix)/etc/openssl/certs

A-Dubb
fonte
11
Você também pode tentar o seguinte: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick
Olá, Estou tendo um problema semelhante ( stackoverflow.com/questions/20939105/… ) e o mesmo problema aparece quando tento instalar o home-brew. O que posso fazer neste caso? Digitar "git config --system http.sslcainfo /usr/local/share/ca-bundle.crt" no meu console retorna "erro: não foi possível bloquear o arquivo de configuração /Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig: Esse arquivo ou diretório não existe ". Obrigado pela ajuda!
Mathieu
@ Matthewieu isso é muito estranho. Parece que seu sistema está apontando para uma versão do git em relação ao XCode. Qual é a saída da execução 'what git' do seu terminal?
A-Dubb
6

Você pode tentar este comando no terminal :

git config --global http.sslVerify false

reza_khalafi
fonte
5

Corrigi esse problema usando o apt-cyg (um ótimo instalador semelhante ao apt-get) para baixar facilmente os certificados ca (incluindo o Git e muitos mais):

apt-cyg install ca-certificates

Nota : o apt-cyg deve ser instalado primeiro. Você pode fazer isso na linha de comando do Windows:

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

Feche o cmd do Windows e abra o Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
sagunms
fonte
Isso não funcionou para mim - ainda recebo o mesmo erro.
holdenlee
4

em um pi rasbery eu tive

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Clonagem no 'Dropbox-Uploader' ... erro: Problema com o certificado CA da SSL (caminho? direitos de acesso?) ao acessar http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: a solicitação HTTP falhou

então id um

sudo apt-get install ca-certificates

então

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

trabalhou

fred
fonte
4

Se você usou o SO baseado em debian, pode simplesmente executar

apt-get install ca-certificates

Patrick
fonte
4

Estou enfrentando esse mesmo problema no Solaris Express 11. Demorei um pouco, mas consegui descobrir onde os certificados precisavam ser colocados. De acordo com /etc/openssl/openssl.cnf, o caminho para os certificados é / etc / openssl / certs. Coloquei os certificados gerados usando o conselho acima de Alexey.

Você pode verificar se as coisas estão funcionando usando o openssl na linha de comando:

openssl s_client -connect github.com:443
Martin Smith
fonte
3

Tente usar um arquivo .netrc, ele será autenticado por https. Crie uma chamada de arquivo .netrcno seu diretório pessoal e coloque-o:

machine github.com login myusername password mypass

Veja este post para mais informações:

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj

Travis Reeder
fonte
Esse é um problema de validação de certificado, não de autenticação - alguns sistemas operacionais (incluindo o executado pelo OP) não possuem o novo certificado do github da CA incluído na lista de ações.
Charles Duffy
3

Melhore a solução do RouMao desativando temporariamente a verificação GIT / curl ssl no cmd do Windows:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

O bom dessa solução é que ela só entra em vigor na janela atual do cmd.

Marechal
fonte
3
Isso é EXTREMAMENTE PERIGOSO! O objetivo principal da verificação do certificado SSL é proteger seu código contra violações quando você o estiver transmitindo por HTTPS! Desabilitar isso significa que pessoas mal-intencionadas podem inserir vulnerabilidades e outras coisas desagradáveis ​​no seu código à medida que você pressiona e busca!
3

Você verificou seu tempo?

Recusei-me absolutamente a tornar minhas operações git inseguras e depois de tentar tudo o que as pessoas mencionaram aqui, me ocorreu que uma possível causa pela qual os certificados não passam na verificação é que as datas estão incorretas (a data de validade do certificado ou o local relógio ).

Você pode verificar isso facilmente digitando dateum terminal. No meu caso (um novo raspberry Pi), o relógio local foi ajustado para 1970, então um simples ntpdate -u 0.ubuntu.pool.ntp.orgconsertou tudo. Para uma rPi, também recomendo que você coloque o seguinte script em um trabalho cron diário (digamos /etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Deiu
fonte
3

Gere o token de acesso do Github e salve-o, pois ele não aparecerá novamente.

git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git

ou,

git config --global http.sslVerify false
git clone https://github.com/repo.git
Naseer-shaik
fonte
2

Encontrei o mesmo problema para configurar o Git em uma plataforma de desenvolvimento colaborativo que tenho que gerenciar.

Para resolvê-lo:

  • Atualizei a versão do Curl instalada no servidor. Baixe a última versão no site Baixe a página do curl e siga os procedimentos de instalação Procedimentos de instalação do curl

  • Volte o certificado da autoridade que entrega o certificado para o servidor.

  • Adicione este certificado ao arquivo CAcert usado pelo curl. No meu servidor está localizado em /etc/pki/tls/certs/ca-bundle.crt.

  • Configure o git para usar este arquivo de certificado editando o arquivo .gitconfig e defina o caminho sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • Na máquina cliente, você deve obter o certificado e configurar o arquivo .gitconfig também.

Espero que isso ajude alguns de vocês.

G. Pfeiffer
fonte
1

Eu tentei de tudo, eventualmente procurei no arquivo hosts e havia uma entrada aleatória no github. A remoção do alias corrigiu o problema

% systemroot% \ system32 \ drivers \ etc \ hosts

GenericEventHandler
fonte
1

Simplesmente desabilitei a autenticação do certificado SSL e usei o login de senha de nome de usuário simples, como mostrado abaixoinsira a descrição da imagem aqui

0x3bfc
fonte
0

Eu precisava dos certificados apenas para Cygwin e git, então fiz o que o @esquifit postou. No entanto, eu tive que executar a etapa 5 manualmente, o c_rehash não estava disponível no meu sistema. Segui este guia: Instalando certificados CA na estrutura OpenSSL .

Sonata
fonte
0

Eu precisava de duas coisas:

  1. vá para a configuração do cygwin e inclua o pacote ' ca-certificates ' (está em Net) (como indicado em outro lugar).

  2. Diga ao git onde encontrar os certificados instalados:

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...

    (A opção detalhada não é necessária)

    Ou armazenando a opção permanentemente:

    configuração do git --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...

user2896631
fonte
-2

Eu tive o mesmo problema. A importação ou comando de certificado para desabilitar a verificação SSL não funcionou. É uma senha expirada para o proxy de rede. Houve entrada da configuração do proxy. no arquivo .gitconfig presente no meu perfil de usuário do Windows. Acabei de remover a entrada inteira e ela começou a funcionar novamente.

seiva
fonte
-2

Em um sistema Mac OSX 10.5, consegui que isso funcionasse com um método simples. Primeiro, execute os procedimentos do github e o teste, que funcionaram bem para mim, mostrando que meu certificado estava realmente bom. https://help.github.com/articles/generating-ssh-keys

ssh -T [email protected]

Finalmente notei outro formato de URL para controles remotos. Eu tentei os outros acima e eles não funcionaram. http://git-scm.com/book/ch2-5.html

[email protected]:MyGithubUsername/MyRepoName.git

Um simples "git push myRemoteName" funcionou muito bem!

AnneTheAgile
fonte
-2

Recentemente (julho de 2014), tive um problema semelhante e descobri no OS X (10.9.4) que havia um certificado "DigiCert High Assurance EV Root CA" expirado (embora eu também tivesse outro não expirado).

  1. Acesso ao chaveiro aberto
  2. Procure Certificados para "DigiCert"
  3. Exibir menu> Mostrar certificados expirados

Encontrei dois certificados com o nome "DigiCert High Assurance EV Root CA", um expirando em novembro de 2031 e o expirado em julho de 2014 (alguns dias antes). A exclusão do certificado expirado resolveu o problema para mim.

Espero que isto ajude.

craigb
fonte
-2

Para aqueles que usam Msys / MinGW GIT, adicione este

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
John Chain
fonte