Pregunta

Estoy usando LibCurl para descargar un archivo desde un servidor remoto. Ese servidor remoto requiere certificados del cliente. Estas son las opciones que he probado:

curl_easy_setopt(pCurl, CURLOPT_URL, url);
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt(pCurl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(pCurl, CURLOPT_CERTINFO, 1L);
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, 1);
//the following two lines specify the path to my valid client certificate
curl_easy_setopt(pCurl, CURLOPT_CAINFO, "c:\\Delta.p12");
curl_easy_setopt(pCurl, CURLOPT_CAPATH, "c:\\Delta.p12");

Cuando hago la solicitud HTTPS, obtengo un error 403: prohibido que dice que no he especificado las credenciales necesarias. Este certificado funciona a través de un navegador, por lo que sé que el certificado es válido.

Se agradece cualquier ayuda para obtener este trabajo. ¡Gracias!

¿Fue útil?

Solución

Si obtiene un 403, ya pasó la capa SSL, por lo que indicaría que el certificado era lo suficientemente bueno, pero que el servidor está hablando de otra cosa.

Pero tenga en cuenta que las opciones CurlaPT_CA* se utilizan para especificar su paquete CA CERT (o ruta), por lo que las líneas anteriores no establecen ningún certificado de cliente en absoluto.

Para obtener un pequeño ejemplo que muestre cómo usar un certificado de cliente con LibCurl, consulte esto:

http://curl.haxx.se/libcurl/c/simplessl.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top