Ubuntu 10.04 / CURL: Bagaimana cara saya memperbaiki / memperbarui Bundel CA?

17

Saya baru-baru ini meningkatkan server kami dari 8,04 ke 10,04, dan semua perangkat lunak bersama dengannya.

Dari apa yang saya temukan online, sepertinya versi baru CURL tidak termasuk bundel CA, dan, sebagai akibatnya, gagal memverifikasi bahwa sertifikat server yang Anda sambungkan ditandatangani oleh otoritas yang valid .

Kesalahan sebenarnya adalah:

Kesalahan CURL: Masalah sertifikat SSL, verifikasi bahwa sertifikat CA OK.
Detail: kesalahan: 14090086: Rutinitas SSL: SSL3_GET_SERVER_CERTIFICATE:
verifikasi sertifikat gagal 

Beberapa situs yang saya temukan menyarankan secara manual menentukan file CA atau menonaktifkan pemeriksaan secara keseluruhan dengan menetapkan opsi ketika Anda memanggil CURL, tetapi saya lebih suka memperbaiki masalah secara global, daripada harus memodifikasi panggilan CURL setiap aplikasi.

Apakah ada cara untuk memperbaiki masalah CA CURL di seluruh server sehingga semua kode aplikasi yang ada berfungsi sebagaimana mestinya tanpa perlu diubah?

Nick
sumber

Jawaban:

17

Saya telah mengalami masalah yang sama dan setelah mencari-cari sedikit menemukan bahwa Anda dapat mengunduh paket CA-certs siap untuk curl di ubuntu langsung dari situs curl dev.

cd /etc/ssl/certs
sudo wget http://curl.haxx.se/ca/cacert.pem

Sekarang curl menggunakan bundel paling mutakhir dan Anda siap melakukannya.

Paul Alexander
sumber
1
setelah itu saya harus memperbarui dengan: update-ca-sertifikat -f
Grain
9

Punya masalah yang sama dengan Ubuntu 12.04 menjalankan curl dari baris perintah untuk mendapatkan alat baris perintah aws yang ada di github. Saya menemukan jika saya menjalankan baris perintah seperti itu:

curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt

itu akan berhasil. Tetapi mencoba mengatur variabel lingkungan CURL_CA_BUNDLE sehingga saya dapat menghindari argumen "cacert" tidak akan berfungsi. Akhirnya memperbarui sertifikat-ca tampaknya menyelesaikan masalah:

sudo update-ca-certificates

Sebagai catatan, pada satu titik saya memperbarui ca-certs dari curl.haxx.se yang tidak menyelesaikan masalah tetapi mungkin terkait. ( sudo wget http://curl.haxx.se/ca/cacert.pemlari dari /etc/ssl/certs).

Bob Morley
sumber
Tautan 404 untuk saya. Ini berfungsi: curl.haxx.se/ca/cacert.pem
dave1010
2
Hmm. Tampaknya cerdik untuk mengambil file yang berisi sertifikat seperti itu tidak lebih dari HTTPS.
Matthew Schinckel
5

Biasanya, perangkat lunak yang tidak memiliki implementasi unik dan dikompilasi dengan OpenSSL akan merujuk ke ca-bundle.crt sistem-lebar yang sering terletak di /usr/share/ssl/certs.

Lokasi mungkin berbeda di Ubuntu tetapi paket OpenSSL harus menyertakan file ca-bundle.

CURL memiliki beragam opsi untuk menentukan cara memverifikasi sertifikat.

  • The CURL_CA_BUNDLEvariabel lingkungan untuk lokasi file ca-bundel.
  • --capathmemungkinkan Anda menentukan direktori tempat sertifikat CA berada. (Menggantikan CURL_CA_BUNDLE)
  • --cacert memungkinkan Anda menentukan file sertifikat CA.

Di server CentOS saya, saya bisa menjalankan yang berikut untuk mengidentifikasi jalur ca-bundle yang digunakan CURL:

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt
Warner
sumber
1
Open SSL diinstal. Saya memiliki file "ca-Certificate.crt" di / etc / ssl / certs / yang terlihat seperti sekelompok sertifikat yang disatukan, tetapi saya kira CURL tidak melihatnya? Apakah CURL memiliki pengaturan konfigurasi untuk CA-Bundle?
Nick
Apakah Anda yakin itu bukan jenis sertifikat yang berusaha diverifikasi? Teknologi sertifikat yang lebih baru seperti Sertifikasi Verifikasi Diperpanjang sering memerlukan pembaruan ca-bundle, karena sertifikat root relatif baru. Lihat juga edit saya yang akan datang.
Warner
curl-config tampaknya bukan perintah yang valid di Ubuntu. Bagaimana cara menetapkan CURL_CA_BUNDLE?
Nick
Sepertinya itu bagian dari libcurl3-openssl-devpaket berdasarkan pencarian Internet cepat. CURL_CA_BUNDLEhanyalah variabel lingkungan. Dalam bash CURL_CA_BUNDLE=/path/to/file,.
Warner
Baiklah, paket terinstal, tetapi "curl-config --ca" menghasilkan baris kosong. Saya mencoba mengatur variabel menggunakan 'CURL_CA_BUNDLE = "/ etc / ssl / certs / ca-Certificate.crt"'. Tapi "curl-config --ca" masih menghasilkan baris kosong setelahnya.
Nick