通常のユーザーとしてHTTPSでcurl
またはgit clone
を試みると、次のエラーで失敗します。
fatal: unable to access 'https://github.com/mikemackintosh/xxx/': Problem with the SSL CA cert (path? access rights?)
注:rootとしてコマンドを実行する場合、それは正常に動作しますが、sslを介して通信できるユーザーはrootだけではいけません。
だから、私は自分自身に、カールが舞台裏で何をしているのかと思います:
$ 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
出力と一致します。
次のステップは、ファイルの試行と読み取りです。単なる昔ながらの非rootユーザーとして:
$ 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
...
Sudo cat /etc/ssl/certs/ca-certificates.pem
を実行すると、期待どおりに内容が吐き出されます。
ああ、これは確かに権限の問題です。
グーグルで調べてみると、ssl-cert
グループが存在することがわかりましたが、このグループには/etc/ssl/certs
ディレクトリに対する権限がありません。
Apparmorを除外し、ディスクの破損を除外しました。update-ca-certificates (w/wo -f)
などを実行しても改善はありません。
誰もこの動作を見ましたか?
このようなものを見たことはありませんが、2台の別々のマシンで複製しました。注として、私は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 git clone https://github.com/robbyrussell/oh-my-zsh.git
これはcurl verboseモードでリポジトリを複製します(curlは現在問題を引き起こしています)
ここに私が得たものがあります
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?)
次の行に注意してください。
- cA証明書ファイル/bin/curl-ca-bundle.crtの読み取りエラー(ファイルの読み取り中にエラーが発生しました。)
~/.gitconfig
[HTTP]->sslCAinfo
セクションに設定の問題がありました。同じ問題はないかもしれませんが、自分でデバッグするのに十分な情報が得られます。
UNIXでは、パス全体がチェックされますので、私の意見では、パス内のフォルダにアクセス許可があるかどうかを確認する必要があります、少なくともrw-を持っている必要があり、パニックにならないでください、wは話している場合は書き込みを意味しませんフォルダについて... /a/b/c/certificate.pemがあり、「b」を過ぎて取得できない場合、bを超えて取得できないため:D
それが役に立てば幸い :)
SSLベースのアプリケーションがSSL接続の信頼性を確認できるように、CA証明書を持っていることを確認してください。次の方法でインストールできます。
Sudo apt-get install ca-certificates openssl
これは、特にDockerまたはCIコンテナーで欠落している可能性があります。
お持ちの場合は、再インストールを検討してください。
Sudo update-ca-certificates
を実行することもできます。
関連する: