Pertanyaan Bagaimana cara memperbaiki masalah sertifikat CA dengan Curl di Ubuntu 14.04?


Saya menggunakan Ubuntu 14.04. Ketika saya menggunakan curl, saya mendapatkan kesalahan berikut:

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

Dari apa yang saya kumpulkan dari googling, lokasi CAfile yang dicari tidak benar untuk Ubuntu (dan itu tidak ada di komputer saya), /etc/ssl/certs/ca-certificates.crt adalah lokasi yang tepat.

Sebagian besar solusi melibatkan pengaturan variabel lingkungan CURL_CA_BUNDLE ke lokasi yang tepat, atau menambahkan cacert=/etc/ssl/certs/ca-certificates.crt ke (yang baru dibuat) .curlrc file di direktori home saya. Saya telah mencoba keduanya, dan tidak sepenuhnya memecahkan masalah. curl menemukan lokasi ini, tetapi masih tidak berfungsi, memberikan kesalahan:

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

Saya juga mencoba menghapus dan menginstal ulang curl di Ubuntu, dan memperbarui sertifikat CA saya dengan $ sudo update-ca-certificates --fresh yang memperbarui sertifikat, tetapi masih tidak membuat kesalahan 60 pergi.

Saya tidak begitu tahu tentang sertifikat CA, dan ragu saya sengaja menambahkan beberapa sertifikat yang ditandatangani sendiri di masa lalu. Mungkin karena kecelakaan, saya tidak tahu.

Apakah ada yang tahu cara memperbaikinya? Apakah ada cara untuk benar-benar memulai dengan semua sertifikat saya? Atau apakah ada yang tahu bagaimana saya mencari tahu di mana sertifikat yang ditandatangani sendiri ini, dan kemudian bagaimana cara menghapusnya?

PS: Saya tidak ingin menggunakan flag -k (alias --insecure). Saya ingin ini bekerja dengan aman.


11
2017-07-09 22:37


asal




Jawaban:


Setelah meneliti dan mengerjakannya selama beberapa hari terakhir, saya berhasil, dan jawabannya ternyata cukup sederhana.

Saya perlu mengatur capath=/etc/ssl/certs/di saya .curlrc mengajukan.

Ini mendapat curl bekerja pada baris perintah. Untuk mendapatkan ikal lebih lanjut untuk bekerja di R (di mana saya pertama kali mengalami masalah) saya juga harus memiliki cacert=/etc/ssl/certs/ca-certificates.crt di saya .curlrc file seperti yang dicoba sebelumnya, jika tidak terus mencari /etc/pki/tls/certs/ca-bundle.crt

Saya masih tidak tahu mengapa saya melihat kesalahan tentang sertifikat yang ditandatangani sendiri.

Berdasarkan beberapa temuan acak lainnya, saya juga mengunduh sertifikat dari situs web Curl dengan:

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

ke hal yang sama certs direktori. Memiliki cafile menunjuk ini bekerja juga. Pada akhirnya saya mengembalikannya ca-certificates.crt dan itu masih berfungsi.

Saya tidak mengerti persis mengapa ini bekerja atau apa yang sedang terjadi, tetapi itu terselesaikan.


8
2017-07-11 05:22



solusi sederhana, terima kasih! - neildaemond


kafile key tidak bekerja untuk saya (curl 7.45.0) tetapi cacert (dari --cacert option). Saya .curlrc mengajukan:

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

6
2018-03-30 16:42



ini bekerja untuk saya di Ubuntu 16.04! - API


Kami menghadapi masalah yang sama dengan salah satu program C ++ kami di Ubuntu 14.04.5. Itu .curlrc metode tidak berpengaruh.

Ini diselesaikan dengan mengunduh ca-certificates.crt untuk /etc/ssl/certs/ca-certificates.crt dan membuat tautan simbolis ca-bundle.crt dibawah / etc / pki / tls / certs / direktori.

Semoga ini membantu!


0
2017-07-21 15:47