လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင် stream_socke_crypto အမှား "SSL စစ်ဆင်ရေးမအောင်မြင်သောအမှား" SSL စစ်ဆင်ရေးမအောင်မြင်သောအမှားများကိုထိရောက်သောဖြေရှင်းချက်

PHP တွင် stream_socke_crypto အမှား "SSL စစ်ဆင်ရေးမအောင်မြင်သောအမှား" SSL စစ်ဆင်ရေးမအောင်မြင်သောအမှားများကိုထိရောက်သောဖြေရှင်းချက်

M66 2025-07-10

PHP တွင် stream_socket_enable_crypto function ကိုအသုံးပြုသောအခါတစ်ခါတစ်ရံတွင် "SSL စစ်ဆင်ရေးမအောင်မြင်ပါ" ဟူသောအမှားအယွင်းတစ်ခုကြုံတွေ့ရသည်။ အထူးသဖြင့် SSL / TLS encryption protocol ကိုဖွင့်ထားသည့်အခါဆာဗာနှင့် encrypted connection တစ်ခုတည်ဆောက်ရန်ဤပြ problem နာသည်များသောအားဖြင့်ဖြစ်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန် SSL configuration, လက်မှတ်များနှင့် PHP ပတ်ဝန်းကျင်ကိုအသေးစိတ်ဖြေရှင်းရန်လိုအပ်သည်။ ဤဆောင်းပါးသည် developer များဤပြ problem နာကိုဖြေရှင်းရန်ကူညီရန်ထိရောက်သောဖြေရှင်းနည်းများကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ ပြ problem နာခွဲခြမ်းစိတ်ဖြာ

stream_socket_enable_crypto သည် PHP မှအသုံးပြုသော function တစ်ခုဖြစ်ပြီးများသောအားဖြင့် stream socket connection များဖြင့်အသုံးပြုသည်။ ဤအမှားသည်အခြေအနေအမျိုးမျိုးတွင်ဖြစ်ပွားနိုင်ပြီးဘုံအကြောင်းပြချက်များမှာ -

  1. မမှန်ကန်သောသို့မဟုတ်သက်တမ်းကုန်ဆုံးလက်မှတ် - SSL လက်မှတ်နှင့်ပြ a နာတစ်ခုရှိပါကဆက်သွယ်မှုသည်ကျရှုံးနိုင်သည်။

  2. OpenSSL Configuration ပြ issue နာ - PHP သည် Encryption စစ်ဆင်ရေးများကိုကိုင်တွယ်ရန် Openssl Extension တွင်မှီခိုသည်။ OpenSSLL ကိုမှန်ကန်စွာပြုပြင်မထားပါက SSL လည်ပတ်မှုပျက်သွားပေမည်။

  3. ဆာဗာပံ့ပိုးမှုပြ issue နာ - ဆာဗာ၏ SSL Configuration သည်သဟဇာတမဖြစ်နိုင်ပေလောသို့မဟုတ်ထောက်ခံသည့် protocol version များသည်ကွဲပြားသည်။

  4. PHP configuration ပြ problem နာ - PHP ၏ Openssll extension ကို enable ည့်သည်ကိုဖွင့ ်. မသင့်လျော်သော configure ကိုဖွင့်ထားခြင်းမရှိပါ။

2 ။ ဖြေရှင်းနည်း

1 ။ SSL လက်မှတ်ကိုစစ်ဆေးပါ

ပထမ ဦး စွာဆာဗာဘက်မှအသုံးပြုသော SSL လက်မှတ်သည်မှန်ကန်ကြောင်းနှင့် client သည်မှန်ကန်စွာအတည်ပြုနိုင်သည်။ SSL လက်မှတ်၏တရားဝင်မှုကို browser (သို့) command line tool ကို browser (သို့) command line tool ကိုကြည့်ရှုနိုင်သည်။

ဥပမာအားဖြင့်လက်မှတ်ကိုစစ်ဆေးရန် command ကိုသုံးပါ။

 <span><span>openssl s_client -connect yourserver.com:443
</span></span>

လက်မှတ်သည်မမှန်ကန်ပါကသက်တမ်းကုန်ဆုံးလျှင်လက်မှတ်ကိုမွမ်းမံရန်ဆာဗာအုပ်ချုပ်ရေးမှူးကိုဆက်သွယ်ပါ။

2 ။ PHP openssll extension ကို enable လုပ်ပါ

PHP configuration တွင် OpenssSL extension ကိုဖွင့်ထားကြောင်းသေချာအောင်လုပ်ပါ။ အောက်ပါ configuration ကို php.ini ဖိုင်တွင်စစ်ဆေးပါ။

 <span><span><span class="hljs-attr">extension</span></span><span>=openssl
</span></span>

အကယ်. OpenSSLL ကို enable လုပ်ထားတဲ့အတိုင်း,

PHPP ၏ Phpinfo () function ကိုသုံးနိုင်သည်။ အကယ်. ၎င်းကိုမတင်ပါက PHP ကိုပြန်လည်ပေးအပ်ရန်သို့မဟုတ်သင့်လျော်သော openssl library ကို install လုပ်ပါ။

3 ။ မှန်ကန်သော encryption protocol ကို configure

SSL / TLS protocol protocol version Mischatch သည် "SSL စစ်ဆင်ရေးမအောင်မြင်" အမှားအယွင်းများ၏အဓိကအကြောင်းရင်းတစ်ခုဖြစ်သည်။ stream_socket_enable_crypto function တွင် encryption protocol ကို stream_crypto_method_ssv23_clies ကဲ့သို့သော parameters တွေကိုမှတစ်ဆင့်သတ်မှတ်နိုင်သည်။ ပြ issue နာကိုဖြေရှင်းရန် protocol version ကိုပြောင်းလဲရန်ကြိုးစားနိုင်သည်။

 <span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"ssl://yourserver.com:443"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stream</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: <span class="hljs-subst">$errstr</span></span></span><span> (</span><span><span class="hljs-subst">$errno</span></span><span>)\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-title function_ invoke__">stream_socket_enable_crypto</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, STREAM_CRYPTO_METHOD_TLS_CLIENT);
}
</span></span>

If STREAM_CRYPTO_METHOD_TLS_CLIENT does not work properly, you can try other encryption protocol options such as STREAM_CRYPTO_METHOD_SSLv23_CLIENT or STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT , etc.

4 ။ PHP configuration နှင့် system ပတ်ဝန်းကျင်ကိုစစ်ဆေးပါ

တစ်ခါတစ်ရံ PHP configuration သို့မဟုတ် system ပတ် 0 န်းကျင်သည် Openssl ၏အသုံးပြုမှုကိုအကျိုးသက်ရောက်နိုင်သည်။ ဆာဗာ၏ Openssl Libensl စာကြည့်တိုက်နှင့် PHP ဖွဲ့စည်းခြင်းသည်နောက်ဆုံးဗားရှင်းဖြစ်သည်ကိုသေချာအောင်လုပ်ပါ။ Openssl ဗားရှင်းကိုစစ်ဆေးရန်အောက်ပါ command ကိုသင် run နိုင်သည်။

 <span><span>openssl version
</span></span>

အကယ်. သင်၏စနစ်သည် Openssll ဗားရှင်းဟောင်းကိုအသုံးပြုပါကနောက်ဆုံးပေါ်ဗားရှင်းသို့မွမ်းမံရန်အကြံပြုသည်။ Openssll ၏အဟောင်းဗားရှင်းများသည်စာဝှက်စနစ်အသစ်များကိုမထောက်ပံ့နိုင်ပါ။

5 ။ ဆာဗာဘေးထွက် SSL configuration ကိုစစ်ဆေးပါ

client configuration နှင့်ပြ problem နာမရှိပါကဆာဗာဘက်တွင် SSL configuration ကိုစစ်ဆေးနိုင်သည်။ ဆာဗာတွင်မှန်ကန်သော SSL / TLS protocol protocol version နှင့် encryption algorithm algable လုပ်ထားကြောင်းသေချာပါစေ။ မျက်မှောက်ခေတ်ဆာဗာများစွာသည် SSLV2 နှင့် SSLV3 ကဲ့သို့သော SSL ဗားရှင်း (ဥပမာ SSLV2 နှင့် SSLV3 ကဲ့သို့) ကိုပိတ်ထားသဖြင့်ပါတီနှစ်ခုစလုံး၏သဘောတူညီချက်ဗားရှင်းများသည်တသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန်လိုအပ်သည်။

ဆာဗာသည်လိုအပ်သော SSL / TLS protocol version ကိုထောက်ပံ့သည်ကိုစစ်ဆေးရန်အောက်ပါ command ကိုသုံးပါ။

 <span><span>openssl s_client -connect yourserver.com:443 -tls1_2
</span></span>

6 ။ Debug log

ပိုမိုကောင်းမွန်သောပြ problems နာများကိုရှာဖွေရန် PHP တွင်အသေးစိတ်အချက်အလက်မှတ်တမ်းများကိုဖွင့်နိုင်သည်။ Error_reporting နှင့် Display_Erues ကို debugging သတင်းအချက်အလက်များကိုဖော်ပြရန်

 <span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span></span>

ထို့အပြင်သင်သည် SSL အခြေအနေကို debug လုပ်ခြင်းနှင့်ထိန်းချုပ်ရန် SSL အခြေအနေရွေးချယ်မှုများကိုသတ်မှတ်ရန် SSL အခြေအနေရွေးချယ်မှုများကို set up လုပ်ရန် Stream_context_Create ကို သုံးနိုင်သည်။

 <span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>([
    </span><span><span class="hljs-string">'ssl'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'verify_peer'</span></span><span> =&gt; </span><span><span class="hljs-literal">true</span></span><span>,
        </span><span><span class="hljs-string">'verify_peer_name'</span></span><span> =&gt; </span><span><span class="hljs-literal">true</span></span><span>,
        </span><span><span class="hljs-string">'allow_self_signed'</span></span><span> =&gt; </span><span><span class="hljs-literal">false</span></span><span>,
        </span><span><span class="hljs-string">'cafile'</span></span><span> =&gt; </span><span><span class="hljs-string">'/path/to/cacert.pem'</span></span><span>,
    ]
]);

</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"ssl://yourserver.com:443"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>, STREAM_CLIENT_CONNECT, </span><span><span class="hljs-variable">$context</span></span><span>);
</span></span>

7 ။ PHP ဗားရှင်းကို update လုပ်ပါ

အထက်ပါအဆင့်များသည်ပြ issue နာကိုမဖြေရှင်းနိုင်သေးပါက PHP ကိုနောက်ဆုံးပေါ်တည်ငြိမ်သောဗားရှင်းသို့အဆင့်မြှင့်တင်ရန်စဉ်းစားနိုင်သည်။ PHP ဗားရှင်းအဟောင်းများသည်အဆင့်မြှင့်တင်ပြီးနောက်ညှိနှိုင်းနိုင်သည့်သဟဇာတဖြစ်နေသောပြ issues နာများရှိနိုင်သည်။

3 ။ အကျဉ်းချုပ်

"SSL စစ်ဆင်ရေးမအောင်မြင်သော" အမှားတစ်ခုကြုံတွေ့ရသည့်အခါ၎င်းသည်များသောအားဖြင့် SSL configuration issue adition ader and certificate ပြ issue နာတစ်ခု, ဤပြ problem နာအတွက်ထိရောက်သောဖြေရှင်းချက်များမှာ -

  1. လက်မှတ်၏တရားဝင်မှုကိုအတည်ပြုပါ။

  2. PHP သည် OpenSSL တိုးချဲ့မှုကိုသေချာအောင်လုပ်ပါ။

  3. မှန်ကန်သောစာဝှက်စနစ် protocol ကို configure ။

  4. PHP နှင့် Openssl ဗားရှင်းများ၏သဟဇာတကိုစစ်ဆေးပါ။

  5. configure နှင့် debug server-side SSL settings ကို။

အထက်ပါနည်းလမ်းများမှတစ်ဆင့် stream_socket_enable_crypto function ၏ပြ problem နာကိုထိထိရောက်ရောက်ဖြေရှင်းနိုင်သဖြင့်စာဝှက်ထားတဲ့ connection ကိုအောင်မြင်စွာတည်ဆောက်နိုင်အောင်လုပ်ပါ။