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?
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:
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:
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.pem
lari dari/etc/ssl/certs
).sumber
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.
CURL_CA_BUNDLE
variabel lingkungan untuk lokasi file ca-bundel.--capath
memungkinkan Anda menentukan direktori tempat sertifikat CA berada. (MenggantikanCURL_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:
sumber
libcurl3-openssl-dev
paket berdasarkan pencarian Internet cepat.CURL_CA_BUNDLE
hanyalah variabel lingkungan. Dalam bashCURL_CA_BUNDLE=/path/to/file
,.