Search code examples
phpcurltelegram-botphp-telegram-bot

self signed certificate for telegram bot in php curl


I just wanna send a simple request to telegram bot APIs my code is:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
  CURLOPT_CUSTOMREQUEST => "POST",
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

returns:

cURL Error #:SSL certificate problem: self signed certificate

I don't want use any ssl. I wont set any webhook for telegram. this is a simple request and I failed to handle this. please help me


Solution

  • I have the same problem and can be solved by copying file cacert.pem into my server and then insert the path of cacert file into my PHP script. In my case i put file cacert into drive C of my web server and then insert this script into my PHP File:

    CURLOPT_CAINFO => "C:\cacert.pem"

    So your PHP script should be like this:

    $curl = curl_init();
    
    curl_setopt_array($curl, array(
      CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_CAINFO => "C:\cacert.pem",
    ));
    
    $response = curl_exec($curl);
    $err = curl_error($curl);
    
    curl_close($curl);
    
    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }
    

    You can download file cacert.pem from:

    https://drive.google.com/open?id=1FCLH88MpKNLDXZg3pJUSAZ0BbUbNmBR2

    If you still confuse, you can view my complete tutorial video on my youtube:

    https://youtu.be/UNERvcCz-Hw