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
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
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