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.