Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php curl -k or --insecure, -X

Tags:

php

curl

With PHP & curl, I need to connect via a proxy to a SSL secured site, and, ignore certificate warnings. My curl command line looks like this:

curl -k -u username:password -X GET https://someURL 

Looking through curl.php, I see what I think are the correct options to set. With them, I end up with something like this:

  $ch = curl_init("https://someURL");   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Ignore cert errors?   curl_setopt($ch, CURLOPT_PROXY, true);           // Proxy true?   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);               curl_setopt($ch, CURLOPT_USERPWD, "username:password");         $result = curl_exec($ch); 

But, $result always returns false. My password has a special character in it, "!". Perhaps I need to escape it? Other than that, any other ideas?

like image 358
Doo Dah Avatar asked Mar 05 '13 19:03

Doo Dah


People also ask

Is PHP cURL secure?

Curl is as secure as a normal HTTP request.

Does PHP have cURL?

cURL is a PHP extension that allows you to use the URL syntax to receive and submit data. cURL makes it simple to connect between various websites and domains.

What does cURL stand for PHP?

cURL stands for the client URL. PHP cURL is a library that is the most powerful extension of PHP. It allows the user to create the HTTP requests in PHP. cURL library is used to communicate with other servers with the help of a wide range of protocols.


1 Answers

To completely disable ssl certificate checking curl knows the option CURLOPT_SSL_VERIFYPEER. If it is set to false certifcate checking will be disabled at all. As the default value is true, you'll have to add:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

From the PHP documentation:

CURLOPT_SSL_VERIFYPEER FALSE to stop cURL from verifying the peer's certificate. Alternate certificates to verify against can be specified with the CURLOPT_CAINFO option or a certificate directory can be specified with the CURLOPT_CAPATH option. TRUE by default as of cURL 7.10. Default bundle installed as of cURL 7.10.

Note that if certificate checking is disabled you can omit the CURLOPT_SSL_VERIFYHOST setting. So the following line can be removed:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 

You also asked if the following setting is ok:

curl_setopt($ch, CURLOPT_PROXY, true); 

From the PHP documentation:

The HTTP proxy to tunnel requests through.

Means that it accepts a proxy address like '192.168.0.1:3128' if you are using a proxy. true is not meaningful in this case

like image 165
hek2mgl Avatar answered Sep 17 '22 00:09

hek2mgl