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
Lepaskan: 2024-12-15 08:58:13
asal
966 orang telah melayarinya

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

sumber:php.cn
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