Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menyelesaikan Ralat \'Amaran: Gagal Mendayakan Kripto\' semasa Mengakses URL HTTPS dengan OpenSSL?

Bagaimana untuk Menyelesaikan Ralat \'Amaran: Gagal Mendayakan Kripto\' semasa Mengakses URL HTTPS dengan OpenSSL?

Barbara Streisand
Lepaskan: 2024-10-23 11:08:02
asal
485 orang telah melayarinya

How to Resolve

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan