
problema con autenticacion uso de certificado para consumir web service
Publicado por Txema (6 intervenciones) el 07/08/2014 16:21:29
Hola buenas tardes.
Estoy desarrollando un modulo usando cUrl, para consumir un web service autenticandome usando un certificado, bajo HTTPS. Es algo totalmente nuevo para mi, y no logro hacerlo funcionar, y escribo en este foro por si alguien pudiera echarme un cable..
Obtengo diferentes errores, segun las opciones de cUrl que use, como por ejemplo
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
(cuando no especifico CURLOPT_CAINFO)
o
error setting certificate verify locations: CAfile: certdata.txt CApath: /etc/ssl/certs
(si especifico CURLOPT_CAINFO, pero me temo que no tengo acceso a /etc/ssl/certs en el servidor. )
Este es el codigo cUrl que estoy usando, donde quiza este cometiendo uno o varios errores.
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$header = array();
$header[] = 'Content-Type: text/xml;charset=UTF-8';
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 1);
$cafile='certdata.txt';
$caruta=getcwd();
$clientfile=getcwd().'/ws-prepago.pem';
$keyfile=getcwd().'/certificate.pem';
curl_setopt($ch, CURLOPT_CAINFO, $cafile)
curl_setopt($ch, CURLOPT_SSLCERT, $clientfile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $mipass);
curl_setopt($ch, CURLOPT_SSLKEY, $keyfile);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $mipass);
$respuesta=curl_exec($ch);
$strerror=curl_error($ch);
curl_close($ch);
Por otra parte el certificado original es un pfx a partir del cual con openSSL he creado mis ficheros .pem (espero que correctamente)
Con lo cual, no se si hay algo mal en el codigo, si estan mal generados los pem, o si falla algo en la configuracion del servidor o estoy haciendo algo mal con las rutas de los certificados...
Alquien tiene idea de que puede ser? Muchas gracias de antemano.
Estoy desarrollando un modulo usando cUrl, para consumir un web service autenticandome usando un certificado, bajo HTTPS. Es algo totalmente nuevo para mi, y no logro hacerlo funcionar, y escribo en este foro por si alguien pudiera echarme un cable..
Obtengo diferentes errores, segun las opciones de cUrl que use, como por ejemplo
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
(cuando no especifico CURLOPT_CAINFO)
o
error setting certificate verify locations: CAfile: certdata.txt CApath: /etc/ssl/certs
(si especifico CURLOPT_CAINFO, pero me temo que no tengo acceso a /etc/ssl/certs en el servidor. )
Este es el codigo cUrl que estoy usando, donde quiza este cometiendo uno o varios errores.
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$header = array();
$header[] = 'Content-Type: text/xml;charset=UTF-8';
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 1);
$cafile='certdata.txt';
$caruta=getcwd();
$clientfile=getcwd().'/ws-prepago.pem';
$keyfile=getcwd().'/certificate.pem';
curl_setopt($ch, CURLOPT_CAINFO, $cafile)
curl_setopt($ch, CURLOPT_SSLCERT, $clientfile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $mipass);
curl_setopt($ch, CURLOPT_SSLKEY, $keyfile);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $mipass);
$respuesta=curl_exec($ch);
$strerror=curl_error($ch);
curl_close($ch);
Por otra parte el certificado original es un pfx a partir del cual con openSSL he creado mis ficheros .pem (espero que correctamente)
Con lo cual, no se si hay algo mal en el codigo, si estan mal generados los pem, o si falla algo en la configuracion del servidor o estoy haciendo algo mal con las rutas de los certificados...
Alquien tiene idea de que puede ser? Muchas gracias de antemano.
Valora esta pregunta


0