MySQLI :: SSL_SET () function ကို MySQLI :: Real_Connect () ကို မခေါ်မီခေါ်ယူရမည်ဟုခေါ်ရမည်။ သို့မဟုတ်ပါကချိန်ညှိချက်များသည်အကျိုးသက်ရောက်လိမ့်မည်မဟုတ်ပါ။ မှားယွင်းသောခေါ်ဆိုမှုမှာမှားယွင်းသောကြီးကြပ်မှုတစ်ခုဖြစ်သည်။
အမှားဥပမာ -
$conn = new mysqli();
$conn->real_connect('db.m66.net', 'user', 'pass', 'database');
$conn->ssl_set('/path/client-key.pem', '/path/client-cert.pem', '/path/ca.pem', NULL, NULL);
မှန်ကန်သောဥပမာ -
$conn = new mysqli();
$conn->ssl_set('/path/client-key.pem', '/path/client-cert.pem', '/path/ca.pem', NULL, NULL);
$conn->real_connect('db.m66.net', 'user', 'pass', 'database');
Real_Connect () connection () connection ကိုသုံးသောအခါ MySQLI_CLIEN_SSL Flag ကိုမဖွင့်ပါက SSL_set () ဟုခေါ်သော်ပင်လျှင် Connection သည် SSL ကိုဖွင့ ်. မရပါ။
$conn->real_connect('db.m66.net', 'user', 'pass', 'database', null, null, MYSQLI_CLIENT_SSL);
PHP သည် Opensslls extension များကိုဖွင့်ထားသလားဆိုတာကိုကြည့်ဖို့အရေးကြီးတယ်။ PHPP -m ကို အကောင်အထည်ဖော်ခြင်းဖြင့်သင်အတည်ပြုနိုင်သည် Phpinfo () သို့မဟုတ် command line မှတဆင့် Grep Openssllll ။ မဖွင့်ပါက PHP သည် SSL encrypted connection တစ်ခုတည်ဆောက်ရန်မဖြစ်နိုင်ပါ။
ဆာဗာသည် SSL ကိုဖွင့်ပြီးတရားဝင်လက်မှတ်များနှင့်ဖိုင်ဖိုင်များကိုလည်းပေးရမည်။ အောက်ပါ SQL ကြေငြာချက်မှတဆင့်၎င်းကိုသင်အတည်ပြုနိုင်သည်။
SHOW VARIABLES LIKE '%ssl%';
ရလဒ်က Has_SSL ကို မသန်စွမ်းကြောင်း ပြသပါက SSL သည် 0 န်ဆောင်မှုခံယူသူ၏ဆက်တင်များမည်သို့ပင်ရှိပါစေ SSL သည်အကျိုးသက်ရောက်မှုမရှိပါ။
PHP သို့မဟုတ် LibmycliesQlien Connection LibrsqliesqliesqliesqliesqliesqliesqliesQlien connection libraries အချို့၏ဗားရှင်းများသည် SSL ကိုမထောက်ပံ့နိုင်ပါ။ MySQLND driver ကိုအသုံးပြုရန်အကြံပြုသည်။
အရာအားလုံးကိုမှန်ကန်စွာ configure လုပ်ထားရင်တောင်ဆက်သွယ်မှုကိုဖွင့်ထားကြောင်းစစ်ဆေးရန်လိုအပ်သည်။ အမှန်တကယ် encryption status ကိုအောက်ပါဖော်ပြချက်မှတဆင့်ကြည့်ရှုနိုင်သည်။
$result = $conn->query("SHOW STATUS LIKE 'Ssl_cipher'");
$row = $result->fetch_assoc();
if (!empty($row['Value'])) {
echo "SSL 启用,加密算法为: " . $row['Value'];
} else {
echo "SSL 未启用";
}
ပြန်လာပြီဆိုလျှင် SSL ကိုအမှန်တကယ်ဖွင့်ထားမည်မဟုတ်ပါ။
အချို့သောပတ်ဝန်းကျင်တွင် localhost ကို အသုံးပြုပါကဆက်သွယ်မှုသည် Unix Socket သို့ပြန်သွားနိုင်ပြီးကွန်ယက်အလွှာ SSL ကိုကျော်လွှားနိုင်သည်။ ဥပမာအားဖြင့်ရှင်းလင်းသောအိမ်ရှင်အမည်သို့မဟုတ်အိုင်ပီလိပ်စာကိုအသုံးပြုရန်အကြံပြုသည်။
$conn->real_connect('db.m66.net', 'user', 'pass', 'database');