OPENSSL Amaran: "Gagal Mendayakan Kripto" untuk URL HTTPS Tertentu
Isu ini timbul apabila cuba mengakses URL HTTPS tertentu menggunakan file_get_contents () fungsi, walaupun telah mendayakan sambungan openssl. Fungsi ini mengembalikan mesej ralat: "Amaran: Gagal mendayakan kripto," yang menunjukkan bahawa operasi kriptografi yang diperlukan tidak dapat dilakukan.
Punca isu ini terletak pada protokol keselamatan yang digunakan oleh tapak web yang bermasalah. Dalam kes ini, tapak web menggunakan SSLv3, yang merupakan protokol yang lapuk dan terdedah. Konfigurasi lalai openssl tidak menyokong SSLv3 secara lalai atas sebab keselamatan.
Untuk menyelesaikan isu ini dan berjaya mendapatkan kandungan daripada tapak web, penyelesaian diperlukan. Satu pilihan ialah menggunakan fungsi curl_setopt() untuk menentukan versi SSL yang akan digunakan secara manual. Ini boleh dicapai dengan menetapkan pilihan CURLOPT_SSLVERSION kepada 3, yang sepadan dengan SSLv3.
<code class="php">function getSSLPage($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSLVERSION,3); $result = curl_exec($ch); curl_close($ch); return $result; } var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));</code>
Satu lagi isu berpotensi yang mungkin timbul di bawah Windows ialah kekurangan akses kepada sijil akar. Untuk menangani perkara ini, adalah disyorkan untuk memuat turun sijil akar dan menentukan lokasinya secara manual menggunakan pilihan CURLOPT_CAINFO dan CURLOPT_SSL_VERIFYPEER.
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
Dengan melaksanakan penyelesaian ini, anda boleh berjaya mengakses dan mendapatkan kandungan daripada yang bermasalah. laman web menggunakan openssl.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Amaran: Gagal Mendayakan Kripto\' semasa Mengakses URL HTTPS dengan OpenSSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!