Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Betulkan 'Operasi SSL gagal dengan kod 1' Ralat dalam `file_get_contents()` PHP?

Bagaimana untuk Betulkan 'Operasi SSL gagal dengan kod 1' Ralat dalam `file_get_contents()` PHP?

Linda Hamilton
Linda Hamiltonasal
2024-12-15 08:58:13968semak imbas

How to Fix

Menyelesaikan masalah file_get_contents() Ralat Pengesahan Sijil SSL

Apabila cuba mengakses perkhidmatan REST menggunakan file_get_contents() dalam PHP 5.6, anda mungkin menghadapi ralat "Operasi SSL gagal dengan kod 1" disebabkan oleh sijil yang lebih ketat pengesahan.

Perihalan Isu
Halaman PHP pengguna cuba mengambil data dari titik akhir HTTPS menggunakan file_get_contents(). Walau bagaimanapun, ia gagal dengan ralat berikut:

  • Amaran: Operasi SSL gagal dengan kod 1. OpenSSL Ralat mesej: pengesahan sijil gagal
  • Amaran: Gagal mendayakan crypto
  • Amaran: Gagal membuka strim: operasi gagal

Root Sebab
PHP 5.6 memperkenalkan pengesahan SSL yang lebih ketat secara lalai, memerlukan pengesahan sijil yang tepat. Ralat menunjukkan bahawa pelanggan tidak boleh mengesahkan sijil pelayan jauh.

Resolusi
Untuk menyelesaikan isu ini, dokumen PHP rasmi pada OpenSSL berubah dalam 5.6 mengesyorkan supaya pengesahan sijil dilumpuhkan. Nota: penyelesaian ini mempunyai implikasi keselamatan yang ketara dan hanya perlu dipertimbangkan dalam persekitaran terkawal di mana kepercayaan antara pelanggan dan pelayan diwujudkan.

$arrContextOptions = array(
    "ssl" => array(
        "verify_peer" => false,
        "verify_peer_name" => false,
    ),
);

$response = file_get_contents("remote_url", false, stream_context_create($arrContextOptions));
  1. Buat tatasusunan ($arrContextOptions) untuk mengkonfigurasi pilihan SSL.
  2. Tetapkan verify_peer kepada false untuk melumpuhkan sijil pengesahan.
  3. Tetapkan verify_peer_name kepada palsu untuk melumpuhkan pengesahan nama hos.
  4. Buat stream_context menggunakan tatasusunan $arrContextOptions.
  5. Lepaskan konteks strim sebagai parameter ketiga kepada file_get_contents().

Nota Penting
Melumpuhkan pengesahan sijil SSL mengurangkan keselamatan dan boleh mendedahkan aplikasi anda kepada mencuri dengar dan pelanggaran keselamatan yang lain. Adalah amat disyorkan untuk mengkonfigurasi sistem anda dengan betul untuk menggunakan sijil SSL yang dipercayai dan bukannya menggunakan penyelesaian ini.

Atas ialah kandungan terperinci Bagaimana untuk Betulkan 'Operasi SSL gagal dengan kod 1' Ralat dalam `file_get_contents()` PHP?. 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