root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
* Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
curl
ssl
openssl
ssl-certificate
x509certificate
pengguna3812540
sumber
sumber
Jawaban:
Berkaitan dengan 'masalah sertifikat SSL: tidak bisa mendapatkan kesalahan sertifikat penerbit lokal'. Penting untuk dicatat bahwa ini berlaku untuk sistem yang mengirimkan permintaan CURL, dan BUKAN server menerima permintaan.
Unduh cacert.pem terbaru dari https://curl.haxx.se/ca/cacert.pem
Tambahkan baris berikut ke php.ini: (jika ini adalah shared hosting dan Anda tidak memiliki akses ke php.ini maka Anda bisa menambahkan ini ke .user.ini di public_html).
curl.cainfo="/path/to/downloaded/cacert.pem"
Pastikan Anda menyertakan lintasan dalam tanda kutip ganda !!!
Secara default, proses FastCGI akan mem-parsing file baru setiap 300 detik (jika diperlukan Anda dapat mengubah frekuensi dengan menambahkan beberapa file seperti yang disarankan di sini https://ss88.uk/blog/fast-cgi-and-user-ini- file-the-new-htaccess / ).
sumber
curl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Gagal karena cURL tidak dapat memverifikasi sertifikat yang disediakan oleh server.
Ada dua opsi untuk membuatnya berfungsi:
Gunakan cURL dengan
-k
opsi yang memungkinkan curl untuk membuat koneksi yang tidak aman, yaitu cURL tidak memverifikasi sertifikat.Tambahkan root CA (CA menandatangani sertifikat server) ke
/etc/ssl/certs/ca-certificates.crt
Anda harus menggunakan opsi 2 karena itu opsi yang memastikan bahwa Anda terhubung ke server FTP yang aman.
sumber
Saya telah memecahkan masalah ini dengan menambahkan satu kode baris dalam skrip CURL:
Peringatan : Ini membuat permintaan menjadi sangat tidak aman (lihat jawaban oleh @YSU)!
sumber
if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Dalam kasus saya itu ternyata menjadi masalah dengan pemasangan sertifikat saya pada layanan yang saya coba konsumsi dengan cURL. Saya gagal menggabungkan / menyatukan sertifikat perantara dan root ke sertifikat domain saya . Pada awalnya tidak jelas bahwa ini adalah masalah karena Chrome berhasil dan menerima sertifikat meskipun mengabaikan sertifikat perantara dan root.
Setelah menggabungkan sertifikat, semuanya berfungsi seperti yang diharapkan. Saya dibundel seperti ini
Dan diulang untuk semua sertifikat menengah dan root.
sumber
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
di bundel Anda, dan Anda akan mendapatkan kesalahan yang tidak jelas:curl: (77) error setting certificate verify locations
Bagi saya, pemasangan sertifikat yang sederhana membantu:
sumber
Mengalami masalah ini setelah menginstal Git Extensions v3.48. Mencoba menginstal mysysgit lagi tetapi masalah yang sama. Pada akhirnya, harus menonaktifkan (harap pertimbangkan implikasi keamanan!) Dapatkan verifikasi SSL dengan:
tetapi jika Anda memiliki sertifikat domain lebih baik tambahkan ke (Win7)
sumber
--global
menonaktifkan hanya SSL untuk repositori tempat Anda mengalami masalah. Lihat groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw untuk diskusi tentang file crt yang diperlukan saat ini.Kami mengalami kesalahan ini baru-baru ini. Ternyata itu terkait dengan sertifikat root yang tidak diinstal di direktori toko CA dengan benar. Saya menggunakan perintah curl di mana saya menentukan dir CA secara langsung.
curl --cacert /etc/test/server.pem --capath /etc/test ...
Perintah ini gagal setiap kali dengan curl: (60) Masalah sertifikat SSL: tidak bisa mendapatkan sertifikat penerbit lokal.Setelah menggunakan
strace curl ...
, ditentukan bahwa curl sedang mencari file cert root dengan nama 60ff2731.0, yang didasarkan pada konvensi penamaan hass openssl. Jadi saya menemukan perintah ini untuk secara efektif mengimpor sertifikat root dengan benar:yang membuat softlink
Curl, di bawah sampul membaca server.pem cert, menentukan nama file cert root (rootcert.pem), mengubahnya menjadi nama hash, kemudian melakukan pencarian file OS, tetapi tidak dapat menemukannya.
Jadi, takeawaynya adalah, gunakan strace ketika menjalankan curl ketika error curl tidak jelas (sangat membantu), dan kemudian pastikan untuk menginstal root dengan benar menggunakan konvensi penamaan openssl.
sumber
Kemungkinan besar sertifikat hilang dari server.
Root-> Intermediate-> Server
Server harus mengirim Server & Menengah sebagai minimum.
Gunakan
openssl s_client -showcerts -starttls ftp -crlf -connect abc:21
untuk men-debug masalah.Jika hanya satu sertifikat yang dikembalikan (ditandatangani sendiri, atau dikeluarkan), maka Anda harus memilih untuk:
curl -k
(ide yang sangat buruk)Jika server kembali, lebih dari satu, tetapi tidak termasuk sertifikat yang ditandatangani sendiri (root):
Jika server mengembalikan sertifikat CA root, maka itu bukan di CA store Anda, opsi Anda adalah:
Saya telah mengabaikan sertifikat kedaluwarsa / dicabut karena tidak ada pesan yang menunjukkannya. Tetapi Anda dapat memeriksa sertifikat dengan
openssl x509 -text
Mengingat Anda terhubung ke edisi rumah ( https://www.cerberusftp.com/support/help/installing-a-certificate/ ) server ftp, saya akan mengatakan itu ditandatangani sendiri.
Silakan kirim lebih detail, seperti output dari openssl.
sumber
Menurut dokumen CURL Anda juga dapat meneruskan sertifikat ke
curl
perintah:Sebagai contoh:
sumber
Mungkin cukup untuk hanya memperbarui daftar sertifikat
sumber
Coba instal ulang ikal di Ubuntu, dan perbarui sertifikat CA saya dengan
sudo update-ca-certificates --fresh
yang memperbarui sertifikatsumber
Di windows saya mengalami masalah ini. Curl diinstal oleh mysysgit, jadi mengunduh dan menginstal versi terbaru memperbaiki masalah saya.
Kalau tidak, ini adalah instruksi yang layak tentang cara memperbarui sertifikat CA Anda yang dapat Anda coba.
sumber
Ya, Anda juga perlu menambahkan sertifikat CA. Menambahkan potongan kode di Node.js untuk tampilan yang jelas.
sumber
Saya juga mengalami masalah ini. Saya telah membaca utas ini dan sebagian besar jawabannya informatif tetapi terlalu rumit bagi saya. Saya tidak berpengalaman dalam topik jaringan jadi jawaban ini untuk orang-orang seperti saya.
Dalam kasus saya, kesalahan ini terjadi karena saya tidak menyertakan sertifikat perantara dan root di sebelah sertifikat yang saya gunakan dalam aplikasi saya.
Inilah yang saya dapatkan dari pemasok sertifikat SSL:
Dalam
abc.crt
file tersebut, hanya ada satu sertifikat:Jika saya menyediakannya dalam format ini, browser tidak akan menunjukkan kesalahan (Firefox) tetapi saya akan mendapatkan
curl: (60) SSL certificate : unable to get local issuer certificate
kesalahan ketika saya melakukan permintaan curl.Untuk memperbaiki kesalahan ini, periksa
abc-bunde.crt
file Anda . Anda kemungkinan besar akan melihat sesuatu seperti ini:Ini adalah sertifikat Menengah dan root Anda. Kesalahan terjadi karena tidak ada dalam sertifikat SSL yang Anda berikan ke aplikasi Anda.
Untuk memperbaiki kesalahan, gabungkan konten kedua file ini dalam format ini:
Perhatikan bahwa tidak ada spasi di antara sertifikat, di akhir atau di awal file. Setelah Anda memberikan sertifikat gabungan ini ke aplikasi Anda, masalah Anda harus diperbaiki.
sumber
Di windows - jika Anda menjalankan dari cmd
Unduh cacert.pem dari https://curl.haxx.se/docs/caextract.html
Setel variabel lingkungan:
dan memuat ulang lingkungan
Sekarang coba lagi
Alasan untuk masalah ini: https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/95548
sumber
Kasus saya berbeda. Saya hosting situs di belakang firewall. Kesalahan itu disebabkan oleh pfSense.
Saya tidak sengaja menemukan penyebabnya, berkat jawaban ini .
Semua baik-baik saja ketika saya mengakses situs saya dari WAN.
Namun, ketika situs diakses dari dalam LAN (misalnya ketika Wordpress membuat
curl
permintaan ke server sendiri, meskipun menggunakan IP WAN49.x.x.x
), itu disajikan halaman login pfSense.Saya mengidentifikasi sertifikat sebagai
pfSense webConfigurator Self-Signed Certificate
. Tidak herancurl
melemparkan kesalahan.Penyebab: Apa yang terjadi adalah yang
curl
menggunakan alamat IP WAN situs49.x.x.x
. Tapi, dalam konteks server web, IP WAN adalah firewall.Debug: Saya menemukan bahwa saya mendapatkan sertifikat pfSense.
Solusi: Di server yang menghosting situs, arahkan nama domainnya sendiri ke 127.0.0.1
Dengan menerapkan solusi,
curl
permintaan ditangani dengan benar oleh server web, dan tidak diteruskan ke firewall yang merespons dengan mengirimkan halaman login.sumber
Ini adalah masalah toko sertifikat ssh. Anda perlu mengunduh file pem sertifikat yang valid dari situs web target CA, dan kemudian membangun file tautan lunak untuk menginstruksikan ssl sertifikat tepercaya.
openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem
kamu akan mendapatkan
dd8e9d41
buat tautan solf dengan nomor hash dan suffix file dengan .0 (dot-zero)
dd8e9d41.0
Lalu coba lagi.
sumber
Unduh https://curl.haxx.se/ca/cacert.pem
Setelah mengunduh, pindahkan file ini ke server wamp Anda.
Untuk exp: D: \ wamp \ bin \ php \
Kemudian tambahkan baris berikut ke file php.ini di bagian bawah.
curl.cainfo = "D: \ wamp \ bin \ php \ cacert.pem"
sumber
Anda harus mengubah server cert dari
cert.pem
kefullchain.pem
Saya memiliki masalah yang sama dengan Perl HTTPS Daemon:
Saya telah mengubah:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'
menjadi:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'
sumber
Sejauh ini, saya telah melihat masalah ini terjadi dalam jaringan perusahaan karena dua alasan, satu atau keduanya mungkin terjadi dalam kasus Anda:
Sebagai catatan tambahan, No. 2 di atas mungkin membuat Anda merasa tidak nyaman tentang lalu lintas TLS yang seharusnya aman Anda sedang dipindai. Itulah dunia korporat untuk Anda.
sumber
Punya masalah itu dan itu tidak diselesaikan dengan versi yang lebih baru. / etc / certs memiliki cert root, browser mengatakan semuanya baik-baik saja. Setelah beberapa pengujian saya dapatkan dari ssllabs.com peringatan, bahwa rantai saya tidak lengkap (Memang itu rantai untuk sertifikat lama dan bukan yang baru). Setelah memperbaiki rantai sertifikat, semuanya baik-baik saja, bahkan dengan ikal.
sumber
Saya punya masalah dengan Digicert dari semua CA. Saya membuat file digicertca.pem yang baru saja ditengah dan root disatukan menjadi satu file.
Eorekan punya jawaban tetapi hanya mendapatkan saya dan satu lagi untuk memilih jawabannya.
sumber
Khusus untuk
Windows
pengguna, menggunakancurl-7.57.0-win64-mingw
atau versi serupa.Ini agak terlambat, dan jawaban yang ada sudah benar. Tetapi saya masih harus berjuang sedikit untuk membuatnya bekerja pada mesin Windows saya, meskipun prosesnya sebenarnya cukup mudah. Jadi, bagikan proses langkah demi langkah.
Kesalahan ini pada dasarnya berarti, curl gagal memverifikasi sertifikat URI target. Jika Anda mempercayai penerbit sertifikat (CA), Anda dapat menambahkannya ke daftar sertifikat tepercaya.
Untuk itu, jelajahi URI (mis. Di Chrome) dan ikuti langkah-langkahnya
.cer
file ini dan salin isinya (termasuk ----- BEGIN CERTIFICATE ----- dan ----- END CERTIFICATE -----)curl.exe
disimpan misC:\SomeFolder\curl-7.57.0-win64-mingw\bin
curl-ca-bundle.crt
file dengan editor teksSekarang perintah Anda harus dijalankan dengan baik di curl.
sumber
ini dapat membantu Anda untuk membuang waktu:
diuji pada guzzle / guzzle 3. *
sumber
Solusi sederhana: IN
~/.sdkman/etc/config
, ubahsdkman_insecure_ssl=true
Langkah-langkah:
nano
~/.sdkman/etc/config
ubah
sdkman_insecure_ssl=false
untuksdkman_insecure_ssl=true
menyimpan dan keluar
sumber