Problemas de permissão com /etc/ssl/certs/ca-certificates.crt

3

Ao tentar curl ou git clone algo sobre HTTPS como usuário comum, ele falha com o erro:

fatal: unable to access 'https://github.com/mikemackintosh/xxx/': Problem with the SSL CA cert (path? access rights?)

Nota : Se eu executar os comandos como root, ele funciona bem, mas o root não deve ser o único usuário capaz de se comunicar através de SSL.

Então, eu penso comigo, ok, o que é que você faz nos bastidores:

$ GIT_CURL_VERBOSE=1 git clone https://github.com/mikemackintosh/xxx
Cloning into 'xxx'...
* Couldn't find host github.com in the .netrc file; using defaults
* Hostname was NOT found in DNS cache
*   Trying 192.30.252.130...
* Connected to github.com (192.30.252.130) port 443 (#0)
* error reading ca cert file /etc/ssl/certs/ca-certificates.crt (Error while reading file.)
* Closing connection 0
fatal: unable to access 'https://github.com/mikemackintosh/xxx/': Problem with the SSL CA cert (path? access rights?)

Como resultado, podemos confirmar que o arquivo ca-certificate é: /etc/ssl/certs/ca-certificates.crt , que corresponde a curl-config -ca output.

O próximo passo é tentar ler o arquivo. Como apenas um usuário simples e não-root:

$ cat /etc/ssl/certs/ca-certificates.crt
cat: /etc/ssl/certs/ca-certificates.crt: Permission denied

Agora isso parece estranho.

$ sudo ls -la /etc/ssl/certs/ca-certificates.crt
-rw-r--r-- 1 root root 273790 Jun 15 22:35 /etc/ssl/certs/ca-certificates.crt

$ sudo lsattr /etc/ssl/certs/ca-certificates.crt
-------------e-- /etc/ssl/certs/ca-certificates.crt

Então, olhando para as permissões, é legível por todos. Não deve haver problema em acessá-lo. Nenhum atributo maluco impedindo o acesso.

fazendo um ls -la /etc/ssl/certs/ retornos:

...
l????????? ? ? ? ?            ? Verisign_Class_4_Public_Primary_Certification_Authority_-_G3.pem
l????????? ? ? ? ?            ? VeriSign_Universal_Root_Certification_Authority.pem
l????????? ? ? ? ?            ? Visa_eCommerce_Root.pem
l????????? ? ? ? ?            ? WellsSecure_Public_Root_Certificate_Authority.pem
l????????? ? ? ? ?            ? WoSign_China.pem
l????????? ? ? ? ?            ? WoSign.pem
...

Se eu executar um sudo cat /etc/ssl/certs/ca-certificates.pem , ele exibe o conteúdo conforme o esperado.

Ah, isso é um problema de permissões.

Pesquisando no google, descobri que existe um grupo ssl-cert , mas esse grupo não tem direitos sobre o diretório /etc/ssl/certs .

Exclui o apparmor, descartou a corrupção do disco, não há melhoria se eu executar update-ca-certificates (w/wo -f) , etc.

Alguém viu esse comportamento?

Eu nunca vi nada assim antes, mas o copiei em duas máquinas diferentes. Como nota, eu venho de um histórico do CentOS / RHEL, então este poderia ser um comportamento normal do Ubuntu, mas eu adoraria descobrir uma solução real.

    
por Mike Mackintosh 16.06.2015 / 06:24

3 respostas

8

Execute namei -mo /etc/ssl/certs/ca-certificates.crt . Corresponda sua saída ao seguinte:

f: /etc/ssl/certs/ca-certificates.crt
 drwxr-xr-x root root /
 drwxr-xr-x root root etc
 drwxr-xr-x root root ssl
 drwxr-xr-x root root certs
 -rw-r--r-- root root ca-certificates.crt

Você pode usar chmod e chown para recuperar tudo de volta às configurações corretas:

  • sudo chown root / && chown root /etc/ && chown root /etc/ssl/ && chown root /etc/ssl/certs/ && chown root /etc/ssl/certs/ca-certificates.crt
  • sudo chmod 755 /
  • sudo chmod 755 /etc/
  • sudo chmod 755 /etc/ssl/
  • sudo chmod 755 /etc/ssl/certs
  • sudo chmod 644 /etc/ssl/certs/ca-certificates.crt
por earthmeLon 16.06.2015 / 07:15
2

No unix, todo o caminho está marcado, então, na minha opinião, você deve checar se as pastas no caminho têm permissões, eu acho, elas deveriam ter pelo menos rw-, não entre em pânico, w não significa escreva se falando sobre pastas ... Porque se você tem /a/b/c/certificate.pem e você não pode passar de "b", você não pode passar b: D

Espero que ajude:)

    
por IcyIcyIce 16.06.2015 / 07:05
2

Eu encontrei o mesmo problema hoje. Aqui está o que eu fiz:

  

GIT_CURL_VERBOSE = 1 clone do git link

Este repositório clones no modo curl verbose (curl está causando problema agora)

Aqui está o que eu tenho

Cloning into 'oh-my-zsh'...
* Couldn't find host github.com in the .netrc file; using defaults
* Hostname was NOT found in DNS cache
*   Trying 192.30.252.131...
* Connected to github.com (192.30.252.131) port 443 (#0)
* error reading ca cert file /bin/curl-ca-bundle.crt (Error while reading file.)
* Closing connection 0
fatal: unable to access 'https://github.com/robbyrussell/oh-my-zsh.git/': Problem with the SSL CA cert (path? access rights?)

Anote a linha:

  
  • erro ao ler o arquivo cert /bin/curl-ca-bundle.crt (Erro ao ler o arquivo.)
  •   

Eu tive um problema de configuração na seção ~/.gitconfig [HTTP]->sslCAinfo . Você pode não ter o mesmo problema, mas fornecerá informações suficientes para depuração por conta própria.

    
por VarunAgw 29.01.2016 / 17:49