При попытке к curl
или git clone
что-то по HTTPS как обычный пользователь, это перестало работать с ошибкой:
fatal: unable to access 'https://github.com/mikemackintosh/xxx/': Problem with the SSL CA cert (path? access rights?)
Примечание: Если я выполняю команды как корень, он хорошо работает, но корень не должен быть единственным пользователем, который в состоянии связываться по ssl.
Таким образом, я думаю мне, хорошо, что является вихревым выполнением негласно:
$ 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?)
В результате мы можем подтвердить ca-certificate
файл: /etc/ssl/certs/ca-certificates.crt
который соответствует curl-config -ca
вывод.
Следующий шаг должен попытаться считать файл. Как просто простой, некорневой пользователь:
$ cat /etc/ssl/certs/ca-certificates.crt
cat: /etc/ssl/certs/ca-certificates.crt: Permission denied
Теперь, когда кажется странным.
$ 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
Так смотря на полномочия, это читаемо миром. Не должно быть никакой проблемы, получающей доступ к нему. Никакие сумасшедшие атрибуты, предотвращающие доступ.
выполнение ls -la /etc/ssl/certs/
возвраты:
...
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
...
Если я выполняю a sudo cat /etc/ssl/certs/ca-certificates.pem
, это выкладывает содержание как ожидалось.
О, это - наверняка проблема полномочий.
Делая некоторый поиск с помощью Google, я нашел, что существует ssl-cert
группа, но эта группа не имеет прав на /etc/ssl/certs
каталог.
Исключенный apparmor, исключил дисковое повреждение, нет никакого улучшения, если я работаю update-ca-certificates (w/wo -f)
, и т.д.
Кто-либо видел это поведение?
Я никогда не видел ничего как это прежде, но я копировал его на двух отдельных машинах. Как примечание, я действительно происхожу из среды CentOS/RHEL, таким образом, это могло быть нормальным поведением Ubuntu, но я хотел бы узнать действительное решение.
Выполнить namei -mo /etc/ssl/certs/ca-certificates.crt
. Сопоставьте его вывод со следующим:
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
Вы можете использовать chmod
и chown
, чтобы вернуть все обратно к правильным настройкам:
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
Сегодня я встретился с той же проблемой. Вот то, что я сделал:
клон мерзавца GIT_CURL_VERBOSE=1 https://github.com/robbyrussell/oh-my-zsh.git
Это клонирует репозиторий в вихревом подробном режиме (завихрение вызывает проблему прямо сейчас)
, Вот то, что я получил
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?)
Примечание строка:
- ошибка, читая приблизительно файл сертификата/bin/curl-ca-bundle.crt (Ошибка при чтении файла.)
у меня была проблема конфигурации в ~/.gitconfig
[HTTP]->sslCAinfo
раздел. У Вас не могло бы быть той же проблемы, но она даст Вам достаточно информации для отладки самостоятельно.
В Unix проверяется весь путь, поэтому, на мой взгляд, вы должны проверить, есть ли у разрешений папки в пути, я думаю, они должны иметь как минимум rw-, не паникуйте, w не означает пишите, если говорите о папках ... Потому что если у вас есть /a/b/c/certificate.pem и вы не можете пройти "b", вы не можете пройти b: D
Надеюсь помогает:)
Удостоверьтесь, что у Вас есть сертификаты CA, чтобы позволить основанным на SSL приложениям проверять на подлинность соединений SSL. Они могут быть установлены:
sudo apt-get install ca-certificates openssl
Это может отсутствовать особенно в контейнерах CI или Докере.
, Если у Вас есть он, рассмотрите переустановку его.
можно также попытаться работать: sudo update-ca-certificates
.
Связанный: