curl php ssl tiempo de espera de conexión

Encontré este código en Internet y lo modifiqué para mi uso, no estoy seguro de qué estoy haciendo mal aquí, recibo este error Curl error: SSL connection timeout La parte de inicio de sesión es exitosa, pero la búsqueda no no trabaja conmigo. alguien me puede ayudar con eso por favor?

<?php
//create array of data to be posted
$post_data['username'] = 'user';
$post_data['password'] = 'log';
$post_data['cmd'] = 'log';

//create array of data to be posted
foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//create cURL connection
$curl_connection =
  curl_init('https://sie.com');
//set options
///curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 3990);

curl_setopt($curl_connection, CURLOPT_USERAGENT,
  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

curl_setopt($curl_connection, CURLOPT_HTTPHEADER, array(
    'Connection: Keep-Alive',
    'Keep-Alive: 300'
));

curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$result = curl_exec($curl_connection);
//show information regarding the request

//print_r(curl_getinfo($curl_connection));
//echo curl_errno($curl_connection) . '-' .
  //              curl_error($curl_connection);
//close the connection
//curl_close($curl_connection);


echo $result."\n";


$post_data1['cmd'] = 'Viewr';
$post_data1['search'] = 'test';



foreach ( $post_data1 as $key => $value1) {
    $post_items1[] = $key . '=' . $value1;
}
$post_string1 = implode ('&', $post_items1);
echo $post_string1."\n";
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$result1 = curl_exec($curl_connection);
//show information regarding the request
//$result1 =1;
//close the connection
//curl_close($curl_connection);
if ($result1)
echo "ok \n\n";
else
echo "nok\n";
if(curl_errno($curl_connection))
{
    echo 'Curl error: ' . curl_error($curl_connection)."\n";
}
echo($post_string1);
echo $result1."\n";


curl_close($curl_connection);


?>

preguntado el 29 de junio de 12 a las 19:06

Hola Craig, ¿No estás seguro de cómo hacer eso? -

Junto a la respuesta correcta, debajo de la calificación:

En sus otras preguntas, hay una marca de verificación junto a todas las respuestas. Marque el que resolvió o lo ayudó a resolver el problema. Importa. -

3 Respuestas

Intenta agregar esto (¡Pero no deje esta opción configurada en producción!):

curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);

Si funciona después, es porque CURL no puede negociar el certificado SSL.

Siga este tutorial para conocer los pasos sobre cómo obtener el certificado de CA: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

Otra cosa a investigar es, antes tu curl_exec(), curl_copy_handle(); y luego establecer parámetros adicionales.

Además, o alternativamente, puede reiniciar cURL con curl_init($url);.

Respondido el 16 de enero de 16 a las 03:01

en realidad está configurado como falso, lo acabo de verificar. - Jack Jordán

¿Tienes Wireshark o TCPDUmp? ¿Obtienes una respuesta en 443? ¿O se cuelga en el TCP SYN? - mike macintosh

Entonces, el inicio de sesión funciona, que es el primer curl_exec, pero luego el segundo curl_exec parece estar atascado: Jack Jordán

Intente reinicializar cURL la segunda vez también. O cierre el primer cURL y vuelva a abrir cURL antes del segundo bloque. - mike macintosh

La segunda solicitud parece funcionar bien, aunque por alguna razón no obtengo lo que quiero, creo que necesito investigar más, pero nuevamente su solución es buena: Jack Jordán

Use las 2 opciones que enumeré para deshabilitar la verificación SSL temporalmente, eso podría ya sea (si los certificados no están configurados correctamente). Tenga en cuenta la opción "CURLOPT_SSL_VERIFYHOST". De lo contrario, simplemente jugaría más con las opciones. Además, no tiene que recorrer esos valores, solo puede usar una matriz asociativa.

<?php
//create array of data to be posted
$post_data['username'] = 'user';
$post_data['password'] = 'log';
$post_data['cmd'] = 'log';

//create cURL connection
$curl_connection = curl_init();
//set options
curl_setopt($curl_connection,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($curl_connection,CURLOPT_SSL_VERIFYPEER, false);

// ...

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_data);//it can accept associative arrays

// ...

?>

Respondido el 29 de junio de 12 a las 19:06

Después de probar las otras respuestas, todavía estaba obteniendo la SSL connection timeout error.

Revisé mi php.ini y decidí verificar si había algo relacionado con OpenSSL, y encontré que:

;extension=php_openssl.dll

Lo habilité descomentando la línea.

extension=php_openssl.dll

Ahora, con OpenSSL habilitado (este es el parámetro en Windows, debería ser similar en Linux/Mac) y después de reiniciar mi servidor Apache, ¡finalmente puedo ejecutar mi solicitud cURL sin ningún error!

respondido 14 nov., 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.