Saya mendapatkan kesalahan berikut menggunakan curl:
curl: (77) pengaturan kesalahan sertifikat memverifikasi lokasi: CAfile: /etc/ssl/certs/ca-certificates.crt CApath: tidak ada
Bagaimana cara saya mengatur lokasi verifikasi sertifikat ini? Terima kasih.
ca-certificates
menginstal tetapi kesalahan tetap ada. Masalahnya adalah sertifikat saya berada di/etc/ssl/certs/ca-certificates.crt
bukan/etc/pki/tls/certs/ca-bundle.crt
, jadi saya hanya perlu mengatur variabel lingkunganCURL_CA_BUNDLE
ke jalur yang benar.export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
.Jawaban:
Kesalahan ini terkait dengan paket yang hilang :
ca-certificates
. Pasang itu.Di Ubuntu Linux (dan distro serupa):
Dalam CygWin via Apt-Cyg
Di Arch Linux (Raspberry Pi)
Dokumentasi tersebut memberi tahu:
Seperti yang terlihat di: Debian - Detail paket ca-sertifikat dalam pemerasan
sumber
pacman -S ca-certificates-utils
. Aku melakukannya.sudo apt install --reinstall ca-certificates
menginstal ulang paket dan menyelesaikan kesalahan yang saya lihatSaya juga telah menginstal versi terbaru dari ca-sertifikat tetapi masih mendapatkan kesalahan:
Masalahnya adalah bahwa curl mengharapkan sertifikat berada di jalur
/etc/pki/tls/certs/ca-bundle.crt
tetapi tidak dapat menemukannya karena berada di jalur/etc/ssl/certs/ca-certificates.crt
.Menyalin sertifikat saya ke tujuan yang diharapkan dengan menjalankan
bekerja untukku. Anda harus membuat folder untuk tujuan target jika tidak ada dengan menjalankan
Jika perlu, modifikasi perintah di atas untuk membuat nama file tujuan sesuai dengan jalur yang diharapkan oleh curl, yaitu ganti
/etc/pki/tls/certs/ca-bundle.crt
dengan jalur berikut "CAfile:" di pesan kesalahan Anda.sumber
ln -s
jika tidak ingin menyalinnya kembali setiap kali Anda memperbaruinya.rescuetime
aplikasi pada Fedora 25.sudo ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-certificates.crt
memecahkan masalah. (CURL_CA_BUNDLE
env var tidak berfungsi)sudo ln -s /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.pem
. Saya benar-benar mendapatkanThe repository ... does not have a Release file
yang disebabkan oleh sertifikat yang hilang (Could not load certificates from ...
).Masukkan ini ke dalam
.bashrc
(lihat komentar dari Robert)
sumber
$CURL_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"
ke.xonshrc
).CURL_CA_BUNDLE=/path/to/bundle.crt curl http://example.com
Buat file
~/.curlrc
dengan konten berikutsumber
~/.curlrc
cacert=/etc/openssl/cert.pem
Cara tercepat untuk mengatasi kesalahan ini adalah menambahkan opsi -k di suatu tempat di permintaan ikal Anda. Pilihan itu "memungkinkan koneksi ke kutipan SSL tanpa sertifikat." (dari curl --help)
Ketahuilah bahwa ini mungkin berarti bahwa Anda tidak berbicara dengan titik akhir seperti yang Anda pikirkan, karena mereka menunjukkan sertifikat yang tidak ditandatangani oleh CA yang Anda percayai.
Sebagai contoh:
memberi saya respons kesalahan berikut:
Saya menambahkan -k:
dan tidak ada pesan kesalahan. Sebagai bonus, sekarang saya telah menginstal apt-cyg. Dan ca-sertifikat.
sumber
-k
benderanya berarti Anda kehilangan verifikasi. Tergantung pada kebutuhan Anda, ini mungkin dapat diterima. MITM adalah serangan non-sepele jika Anda menganggap jaringan Anda dan server yang berkomunikasi dengan Anda diamankan dari interlopers (dapatkah Anda membuat asumsi itu?). Risiko meningkat tergantung pada jenis data Anda (kode sumber dan sertifikat lebih berisiko daripada gambar). Anda dapat memverifikasi integritas data setelah transfer (checksum dll.) Tetapi sekarang Anda mengalihkan kepercayaan Anda ke saluran checksum itu. Pada akhirnya-k
memberi Anda sedikit lebih banyak pekerjaan.@roens benar. Ini mempengaruhi semua pengguna Anaconda , dengan kesalahan di bawah ini
curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
Solusinya adalah dengan menggunakan curl sistem default dan menghindari mengacaukan
PATH
variabel Anaconda . Anda juga bisaGanti nama biner Anaconda curl :)
mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda
ATAU hapus Anaconda curl
conda remove curl
$ which curl /usr/bin/curl
[0] Anaconda Ubuntu curl masalah Github https://github.com/conda/conda-recipes/issues/352
sumber
curl
dengan jalur lengkap/usr/bin/curl
Dari
$ man curl
:sumber
Untuk kode PHP yang berjalan pada XAMPP pada Windows saya menemukan saya perlu mengedit php.ini untuk memasukkan di bawah ini
dan kemudian salin ke file https://curl.haxx.se/ca/cacert.pem dan ganti nama menjadi curl-ca-bundle.crt dan letakkan di bawah \ xampp path (saya tidak bisa membuat curl.capath bekerja) . Saya juga menemukan CAbundle di situs CURL tidak cukup untuk situs jarak jauh yang saya sambungkan, jadi digunakan yang terdaftar dengan Windows curl 7.47.1 versi pra-kompilasi di http://winampplugins.co.uk /keriting/
sumber
Saya memiliki masalah yang sama persis. Ternyata,
/etc/ssl/certs/ca-certificates.crt
file saya salah. Entri terakhir menunjukkan sesuatu seperti ini:Setelah menambahkan baris baru sebelumnya
-----END CERTIFICATE-----
, curl dapat menangani file sertifikat.Ini sangat menjengkelkan untuk mencari tahu karena
update-ca-certificates
perintah saya tidak memberi saya peringatan apa pun.Ini mungkin atau mungkin bukan masalah curl versi khusus, jadi inilah versi saya, hanya untuk kelengkapan:
sumber
Ini berhasil untuk saya
lalu masuk ke folder sertifikat di
kemudian Anda menyalin file ca-Certificate.crt ke dalam
/etc/pki/tls/certs
jika tidak ada folder tls / certs: buat satu dan ubah izin menggunakan chmod 777 -R folderNAME
sumber
Alternatif lain untuk memperbaiki masalah ini adalah menonaktifkan validasi sertifikat:
sumber
curl melakukan
SSL
verifikasi sertifikat secara default, menggunakan "bundel"Certificate Authority (CA)
kunci publik (CA certs). Bundel default bernama curl-ca-bundle.crt; Anda dapat menentukan file alternatif menggunakan opsi --cacert.Jika
HTTPS
server ini menggunakan sertifikat yang ditandatangani oleh CA yang diwakili dalam bundel, verifikasi sertifikat mungkin gagal karena masalah dengan sertifikat (mungkin kedaluwarsa, atau nama itu mungkin tidak cocok dengan nama domain di URL).Jika Anda ingin mematikan verifikasi curl tentang sertifikat, gunakan opsi -k (atau
--insecure
).sebagai contoh
sumber
Tampaknya ikal Anda mengarah ke file yang tidak ada dengan sertifikat CA atau serupa.
Untuk referensi utama pada sertifikat CA dengan curl, lihat: https://curl.haxx.se/docs/sslcerts.html
sumber
Cukup buat folder, yang hilang di sistem Anda ..
dan buat file menggunakan perintah berikut,
lalu salin dan tempel sertifikat ke folder tujuan, yang ditampilkan dalam kesalahan Anda .. milikku "
with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in
" pastikan Anda menempelkan file ke lokasi persis yang disebutkan dalam kesalahan. Gunakan perintah berikut untuk menyalin tempel ..Tetap.
sumber
Untuk apa nilainya, memeriksa
which curl
sedang dijalankan juga penting.Seorang pengguna di mesin bersama yang saya kelola telah mendapatkan kesalahan ini. Tapi penyebabnya ternyata karena mereka menginstal Anaconda ( http://continuum.io ). Melakukan hal menempatkan jalur biner Anaconda sebelum standar
$PATH
, dan itu datang dengan sendiricurl
biner, yang memiliki kesulitan menemukan sertifikat default yang telah diinstal pada mesin Ubuntu ini.sumber
which -a curl
untuk melihat semua yang tersedia, dan tentu saja mencatat mana yang berada di atas.Jika ada yang masih kesulitan, coba ini, itu berhasil untuk saya. Hapus file di file Anda
/etc/ssl/certs/
direktori lalu instal ulang ca-sertifikat:Apakah ini ketika saya mencoba menginstal Linuxbrew.
sumber
Jika Anda menggunakan homebrew di macOS atau linuxbrew di linux, coba instal ulang
openssl
dancurl
dengan langkah-langkah berikut dari halaman ini .Anda mungkin perlu memulai sesi shell baru untuk memverifikasi hasilnya
Jika ini menunjukkan output berikut dalam output, masalahnya harus diselesaikan!
Referensi:
sumber
Saya punya masalah yang sama: Saya sedang membangun gambar buruh pelabuhan berbasis alpine, dan ketika saya ingin meringkuk ke situs web organisasi saya, kesalahan ini muncul. Untuk mengatasinya, saya harus mendapatkan sertifikat CA dari perusahaan saya, kemudian, saya harus menambahkannya ke sertifikat CA dari gambar saya.
Dapatkan sertifikat CA
Gunakan OpenSSL untuk mendapatkan sertifikat yang terkait dengan situs web:
Ini akan menampilkan sesuatu seperti:
Dapatkan sertifikat terakhir (konten antara
-----BEGIN CERTIFICATE-----
dan-----END CERTIFICATE-----
markup disertakan) dan simpan ke dalam file (mycompanyRootCA.crt misalnya)Bangun citra Anda
Kemudian, ketika Anda akan membuat gambar buruh pelabuhan dari alpine, lakukan hal berikut:
Gambar Anda sekarang akan berfungsi dengan baik! \Hai/
sumber
Temukan saja solusi ini berfungsi dengan baik untuk saya.
Saya menemukan solusi ini dari sini
sumber
Kesalahan ini disebabkan oleh file sertifikat rantai SSL yang rusak atau hilang di direktori PKI. Anda harus memastikan file ca-bundle, langkah-langkah berikut: Di konsol / terminal Anda:
Masukkan situs ini: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates , dapatkan sertifikat-ca Anda, untuk SO. Salin url unduhan dan tempel di url: wget your_url_donwload_ca-ceritificated.rpm sekarang, instal rpm Anda:
sekarang restart layanan Anda: contoh saya perintah ini:
sumber
Jalankan perintah berikut di git bash yang berfungsi dengan baik untuk saya
sumber
Ini diperbaiki untuk saya:
sumber
Saya menemukan perbaikan ini menjadi perbaikan yang mudah dan aman. Itu hanya melibatkan mengubah jalur dua nilai dalam
php.ini
file. Ikuti instruksi di sini: https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificatesumber
Di bawah ini jelaskan langkah-langkah untuk memperbaiki masalah tersebut.
1. Cari tahu file tersebut ada di url define.
2. Jika tidak maka unduh file dari url. https://curl.haxx.se/ca/cacert.pem
3. Salin dan hama file ke jalur yang ditentukan pada file php.ini.
4. Mulai ulang layanan apache.
sumber
Saya punya masalah ini dan ternyata versi CURL saya tidak dapat menguraikan sertifikat DER-disandikan (dan juga tidak memperhatikan opsi --cert-type). Ketika saya mengonversi sertifikat ke format PEM, itu berhasil.
sumber
Dalam kasus saya,
/etc/ssl/certs/ca-certificates.crt
file tersebut hilang. Karena ternyata saya telah menghapus konten/etc/ssl/certs
dari dalam Dockerfile ketika membangun gambar buruh pelabuhan. Setelah menyesuaikan skrip shell saya / perintah bash dijalankan dari dalam Dockerfile - curl berfungsi sempurna dari dalam wadah baru.sumber