cURL error 77 al conectar una https con certificado

Iniciado por Apokryphos, 21 Junio 2017, 21:35 PM

0 Miembros y 1 Visitante están viendo este tema.

Apokryphos

Saludos amigos(as) del foro: tengo una gran inquietud en función que deseo obtener unos datos de una web que requiere autentificacion y la misma tiene un certificado digital el codigo que llevo hasta ahora es el siguiente
Código (php) [Seleccionar]

                               $username = "xxxxxxxxx";
                               $password = "xxxxxxxxx";
                               $ci_nC = $_POST['consulta'];
                               $sección="1";
                               $ubicacion_menu="ubicacion_menu.php";
                               $verifiCed="xxxxxx";
                               $url = "https://direcciondeacceso.com/index.php";
                               $url2 = "https://direcciondeacceso.com/consulta.php/";
                               $header = "Content-type: application/x-www-form-urlencoded";
                               
                               /* Primera petición */
                               // Login
                               $raw_post =  "&". http_build_query(array("LOGIN" => $username));
                               $raw_post .= "&". http_build_query(array("CLAVE" => $password));
                               $ch = curl_init($url);
                               curl_setopt($ch, CURLOPT_POST,1);
                               curl_setopt($ch, CURLOPT_TIMEOUT, 15 );
                               curl_setopt($ch, CURLOPT_POSTFIELDS , utf8_encode( $raw_post ) );
                               curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
                               curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
                               curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                               curl_setopt($ch, CURLOPT_CAINFO, getcwd().'../certificado.crt' );
                               curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
                               curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
                               curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
                               $buffer  = curl_exec( $ch );
                               $errorcURL = curl_errno( $ch );
                               curl_close( $ch );  
                               
                               if($errorcURL){
                                   echo "ERROR: ".$errorcURL."</BR>";
                               }                              
                               // Segunda peticion de datos
                               $raw_post2 =  "&". http_build_query(array("consulta" => $ci_nC));
                               $raw_post2 .= "&". http_build_query(array("ubicacion_menu" => $ubicacion_menu));
                               $ch = curl_init($url2);
                               curl_setopt($ch, CURLOPT_POSTFIELDS , utf8_encode( $raw_post2 ) );
                               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                               curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
                               curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
                               curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
                               $buffer  = curl_exec( $ch );
                               $errorcURL2 = curl_errno( $ch );
                               curl_close( $ch );
                               if($errorcURL){
                                   echo "ERROR: ".$errorcURL2."</BR>";
                               }  
                                                       
                                                 
                               if ( preg_match("|<td class='cnt-color2'>(.*?)</td>|is",$buffer,$cap) )
                               {
                                       echo "respuesta 1";
                               }else{
                                   echo "respuesta 2";
                               }


Ahora bien el problema en si, es que no logro que pase de la primera consulta, aun dando los datos de logeo correctos no pasa por la parte del certificado según presumo por el tipo de error del curl_errno = "77". Un dato adicional es que al acceder a la web en cuestión a través del navegador "chrome" en este caso me da un error NET::ERR_CERT_AUTHORITY_INVALID que normalmente le doy a opciones avanzadas y acceso sin mayor dificultad, aunque no se si esto afecta el logueo a traves del cURL