Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Barbara Streisandasal
2024-10-23 11:08:02466semak imbas

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>

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!

Kenyataan:
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