Perilaku fungsi-fungsi ini dipengaruhi oleh pengaturan di php. ini Show Berikut penjelasan singkat tentang direktif konfigurasi curl.cainfo stringNilai default untuk opsi
This local development error comes when curl.cainfo variable is not set correctly. I faced this issue in PHP Version 7.3.1 In order to fix the error, I downloaded cacert.pem from https://curl.haxx.se/docs/caextract.html Set the following paths in php.ini curl.cainfo="D:\wamp64\bin\php\php7.3.1\extras\ssl\cacert.pem" Even after adding the paths and restart Apache, Inside phpinfo(), both the paths were showing blank. The error will go only if we set via php code of the project. Example code worked for me :-
This problem can occur when developing locally on windows. I am using windows 10 (x64) In order to fix the error, I downloaded cacert.pem from https://curl.haxx.se/docs/caextract.html Set the following value for in php.ini
Dari PHP, Anda dapat mengakses Perpustakaan cURL (libcurl) yang berguna untuk membuat permintaan ke URL menggunakan berbagai protokol seperti HTTP, FTP, LDAP, dan bahkan Gopher. (Jika Anda menghabiskan waktu di baris perintah *nix, sebagian besar lingkungan juga memiliki perintah Namun dalam praktiknya, protokol yang paling umum digunakan cenderung HTTP, terutama saat menggunakan PHP untuk komunikasi server-ke-server. Biasanya ini melibatkan mengakses server web lain sebagai bagian dari panggilan layanan web, menggunakan beberapa metode seperti XML-RPC atau REST untuk menanyakan sumber daya. Misalnya, Delicious menawarkan API berbasis HTTP untuk memanipulasi dan membaca postingan pengguna. Namun, ketika mencoba mengakses sumber daya HTTPS (seperti API yang enak), ada sedikit konfigurasi yang harus Anda lakukan sebelum Anda dapat membuat cURL berfungsi dengan benar di PHP MasalahJika Anda hanya mencoba mengakses HTTPS (sumber daya yang dilindungi SSL atau TLS) di PHP menggunakan cURL, kemungkinan besar Anda akan mengalami beberapa kesulitan. Katakanlah Anda memiliki kode berikut. (Penanganan kesalahan dihilangkan untuk singkatnya)
Jika _Masalahnya adalah cURL belum dikonfigurasi untuk mempercayai sertifikat HTTPS server. Konsep sertifikat dan PKI berkisar pada kepercayaan Otoritas Sertifikat (CA), dan secara default, cURL diatur untuk tidak mempercayai CA mana pun, sehingga tidak akan mempercayai sertifikat server web mana pun. Jadi mengapa Anda tidak mengalami masalah saat mengunjungi situs HTTP melalui browser web Anda? Perbaikan cepatAda dua cara untuk mengatasi masalah ini. Pertama, kita cukup mengonfigurasi cURL untuk menerima sertifikat server (peer) apa pun. Ini tidak optimal dari sudut pandang keamanan, tetapi jika Anda tidak menyampaikan informasi sensitif bolak-balik, ini mungkin baik-baik saja. Cukup tambahkan baris berikut sebelum memanggil
Ini pada dasarnya menyebabkan cURL menerima sertifikat server apa pun secara membabi buta, tanpa melakukan verifikasi apa pun tentang CA mana yang menandatanganinya, dan apakah CA itu dipercaya atau tidak. Jika Anda benar-benar khawatir tentang data yang Anda berikan atau terima dari server, Anda sebaiknya mengaktifkan verifikasi rekan ini dengan benar. Melakukannya sedikit lebih rumit Perbaikan yang tepatPerbaikan yang tepat melibatkan pengaturan parameter Pertama, Anda harus mengunjungi URL dengan browser web Anda untuk mendapatkan sertifikat CA. Kemudian, (di Firefox) buka detail keamanan situs dengan mengklik dua kali ikon gembok di pojok kanan bawah Kemudian klik "Lihat Sertifikat" Buka tab "Detail" di halaman sertifikat, dan pilih sertifikat di bagian atas hierarki. Ini adalah sertifikat CA Kemudian klik "Ekspor", dan simpan sertifikat CA ke lokasi yang Anda pilih, pastikan untuk memilih X. 509 Certificate (PEM) sebagai jenis/format penyimpanan Sekarang kita perlu memodifikasi pengaturan cURL untuk menggunakan sertifikat CA ini, dengan
Opsi lain yang saya sertakan,
Jika 0 disetel ke false, maka dari sudut pandang keamanan, tidak masalah apa yang telah Anda setel CURLOPT_SSL_VERIFYHOST ke, karena tanpa verifikasi sertifikat peer, server dapat menggunakan sertifikat apa pun, termasuk sertifikat yang ditandatangani sendiri yang dijamin . Jadi pengaturan ini benar-benar hanya relevan jika Anda telah mengaktifkan verifikasi sertifikatIni memastikan bahwa tidak sembarang sertifikat server akan dipercaya oleh sesi cURL Anda. Misalnya, jika penyerang entah bagaimana mengalihkan lalu lintas dari api. lezat. com ke server mereka sendiri, sesi cURL di sini tidak akan diinisialisasi dengan benar, karena penyerang tidak akan memiliki akses ke sertifikat server (i. e. tidak akan memiliki kunci privat) yang dipercaya oleh CA yang kami tambahkan. Langkah-langkah ini secara efektif mengekspor CA tepercaya dari browser web ke konfigurasi cURL Informasi lebih lanjutJika Anda memiliki sertifikat CA, tetapi tidak dalam format PEM (mis. e. itu dalam format biner atau DER yang tidak dikodekan Base64), Anda harus menggunakan sesuatu seperti OpenSSL untuk mengonversinya ke format PEM. Perintah persisnya berbeda tergantung pada apakah Anda mengonversi dari format PKCS12 atau DER Ada opsi _2 yang memungkinkan Anda menentukan direktori yang menyimpan beberapa sertifikat CA untuk dipercaya. Tapi itu tidak sesederhana membuang setiap sertifikat CA di direktori ini. Sebagai gantinya, sertifikat CA mereka harus diberi nama dengan benar, dan utilitas OpenSSL 3 dapat digunakan untuk mengatur direktori ini dengan benar untuk digunakan oleh cURL
Bagaimana cara menggunakan sertifikat SSL di curl PHP?Mengikuti langkah-langkah ini akan membantu Anda. . Unduh dan simpan sertifikat yang ditandatangani sendiri Beri tahu klien Curl tentang hal itu dengan saklar baris perintah --cacert [file]. Parameter ini memberi tahu Curl untuk menggunakan file sertifikat yang ditentukan untuk memverifikasi peer. [File] boleh berisi beberapa sertifikat CA dan harus dalam format PEM Apakah curl memeriksa sertifikat SSL?curl melakukan validasi sertifikat peer SSL secara default . Ini dilakukan dengan menggunakan penyimpanan sertifikat yang dapat digunakan pustaka SSL untuk memastikan sertifikat server peer valid.
Apakah curl mendukung SSL?Curl memiliki dukungan bawaan untuk koneksi Transport Aman (versi yang lebih aman disebut TLS). Saat Anda membuat permintaan Curl untuk URL HTTPS, Curl secara otomatis memeriksa sertifikat SSL URL target terhadap penyimpanan sertifikat CA lokal dan memperingatkan jika tidak valid, ditandatangani sendiri, atau telah kedaluwarsa.
Bagaimana cara mem-bypass SSL di curl PHP?Untuk melewati validasi sertifikat SSL untuk server lokal dan pengujian, Anda dapat meneruskan opsi -k atau --insecure ke perintah Curl . Opsi ini secara eksplisit memberi tahu Curl untuk melakukan koneksi SSL "tidak aman" dan transfer file. Curl akan mengabaikan peringatan keamanan apa pun tentang sertifikat SSL yang tidak valid dan menerimanya sebagai valid. |