Ubuntu 14.04'te Curl ile ilgili CA sertifikası sorunlarını nasıl giderebilirim?


14

Ubuntu 14.04 kullanıyorum. Curl kullandığımda, aşağıdaki hatayı alıyorum:

curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:

Google'dan topladığım şeyden aradığı CAfile konumu Ubuntu için doğru değil (ve bilgisayarımda mevcut değil), /etc/ssl/certs/ca-certificates.crtdoğru konumdur.

Çözümlerin çoğu, ortam değişkenini CURL_CA_BUNDLEdoğru konuma ayarlamayı veya ana dizindeki cacert=/etc/ssl/certs/ca-certificates.crt(yeni oluşturulan) .curlrcdosyaya eklemeyi içeriyordu . Her ikisini de denedim ve ikisini de tamamen çözemedim. curl bu konumu buluyor, ancak yine de çalışmıyor ve hatayı veriyor:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

Ayrıca Ubuntu'da kıvırmayı kaldırıp yeniden yüklemeyi denedim ve sertifikaları güncellediğim CA sertifikalarımı $ sudo update-ca-certificates --fresh güncelledim, ancak yine de 60 hata yapmadı.

CA sertifikaları hakkında o kadar bilgili değilim ve geçmişte bilerek kendinden imzalı bir sertifika eklediğime şüphe duymuyorum. Belki de kazara bilmiyorum.

Bunu nasıl çözeceğini bilen var mı? Tüm certs'imle yeni başlamanın bir yolu var mı? Veya bu kendinden imzalı sertifikanın nerede olduğunu nasıl anlayacağımı ve sonra nasıl kaldıracağımı bile bilen var mı?

Not: -k (aka --insecure) bayrağını kullanmak istemiyorum. Bunun güvenli bir şekilde çalışmasını istiyorum.

Yanıtlar:


11

Son birkaç gün boyunca bunu araştırıp üzerinde çalıştıktan sonra işe koyuldum ve cevap oldukça basit oldu.

Ben ayarlamak için gerekli capath=/etc/ssl/certs/zaman içinde .curlrcdosyanın.

Bu komut satırında kıvrılma çalışıyor. Daha fazla R den çalışmak için kıvırmak almak için (burada ilk sorunla karşılaştı) Ben de daha önce denediğim gibi cacert=/etc/ssl/certs/ca-certificates.crtbenim .curlrcdosyada olması gerekiyordu , aksi takdirde aramaya devam etti/etc/pki/tls/certs/ca-bundle.crt

Kendinden imzalı sertifikalarla ilgili hatayı neden gördüğümü hala bilmiyorum.

Diğer bazı rasgele bulgulara dayanarak Curl web sitesinden aşağıdaki sertifikaları da indirdim:

sudo wget http://curl.haxx.se/ca/cacert.pem

aynı certsdizine. Buna cafileişaret ederek de çalıştı. Sonunda geri koydum ca-certificates.crtve hala çalışıyor.

Bunun neden çalıştığını veya neler olduğunu tam olarak anlamıyorum, ancak çözüldü.


9

cafile tuşu benim için çalışmıyor (curl 7.45.0) ama cacert (--cacert seçeneğinden) çalışıyor. Benim .curlrc dosyası:

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

1
bu benim için Ubuntu 16.04 üzerinde çalıştı!
Joost Döbken

0

Ubuntu 14.04.5'teki C ++ programlarımızdan biriyle aynı problemle karşılaştık. .Curlrc yöntemi yürürlüğe girmesi değildi.

Bu indirerek çözüldü ca-certificates.crt için /etc/ssl/certs/ca-certificates.crt ve sembolik bağ oluşturarak ca-bundle.crt altında / etc / aaa / TLS / certs / dizini.

Bu yardımcı olur umarım!


0

Birkaç kez araştırdıktan sonra işe koyuldum ve cevap oldukça basitti. Adım adım yapın

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 sudo wget http://curl.haxx.se/ca/cacert.pem 

Adım 3 certs klasöründeki pem dosyasını indirir

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc gizli bir dosyadır. giriş dizininde ctrl + h ile kontrol edin. yoksa, terminal türünde

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

NB Burada nano editörü kullandım, ancak herhangi bir editörü kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.