| 
	
		|  Autor | Tema: CURL en Windows. SSL  (Leído 8,724 veces) |  
	| 
			| 
					
						| Usuario887 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
Tengo este codigo: #include <stdio.h>#include "curl/include/curl/curl.h" size_t dataSize=0;size_t curlWriteFunction(void* ptr, size_t size/*always==1*/,                         size_t nmemb, void* userdata){    char** stringToWrite=(char**)userdata;    const char* input=(const char*)ptr;    if(nmemb==0) return 0;    if(!*stringToWrite)        *stringToWrite=malloc( nmemb+1);    else        *stringToWrite=realloc(* stringToWrite,  dataSize+ nmemb+1);    memcpy(*stringToWrite+ dataSize,  input,  nmemb);    dataSize+=nmemb;    (*stringToWrite)[dataSize]='\0';    return nmemb;} int main(){    char* data=0;    CURL*const curl=curl_easy_init();    if(!curl)    {        fprintf(stderr, "error: Initialization");        return 1;    }    curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &curlWriteFunction);    if(curl_easy_perform(curl)!=CURLE_OK)    {        fprintf(stderr, "error: get web page\n");        return 1;    }    curl_easy_cleanup(curl);     if(!data)    {        fprintf(stderr, "error: Got no data\n");        return 1;    }     printf("Page data:\n\n%s\n", data);} 
 En Linux, al especificar https: en el URL, no hace ninguna diferencia, sin embargo cuando lo hago en Windows falla la funcion curl_easy_perform. ¿Alguien tiene idea de por que? Gracias y saludos, marax.
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| engel lex | 
 
que error te da? puede ser que te haga falta openssl o algo similar 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| Usuario887 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
Hola, gracias por responder. C:\Users\Programming\Desktop\CURL test>main https://www.google.com Failed to get web page: SSL peer certificate or SSH remote key was not OK C:\Users\Programming\Desktop\CURL test> |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| engel lex | 
 
pareciera un error con el certificado ssl el asunto es que no se si remoto o local, estás tras proxy, vpn o similar?
 intenta con la opcion CURLOPT_VERBOSE activada a ver si te da más info que sea util para determinar el problema
 |  
						| 
								|  |  
								| « Última modificación: 16 Mayo 2021, 02:36 am por engel lex » |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| Usuario887 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
C:\Users\Programming\Desktop\CURL test>main https://www.google.com *   Trying 142.250.185.4:443... * Connected to www.google.com  (142.250.185.4) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * SSL certificate problem: unable to get local issuer certificate * Closing connection 0 Failed to get web page: SSL peer certificate or SSH remote key was not OK C:\Users\Programming\Desktop\CURL test>¿Que es "Certificado del emisor"? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| el-brujo | 
 
Download the latest cacert.pem from https://curl.haxx.se/ca/cacert.pem Add the following line to php.ini: (if this is shared hosting and you don't have access to php.ini then you could add this to .user.ini in public_html). curl.cainfo="/path/to/downloaded/cacert.pem" Make sure you enclose the path within double quotation marks!!!I found out you need to download the .pem file here https://curl.haxx.se/docs/caextract.html And add these settings... curl_easy_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1);             curl_easy_setopt(curl, CURLOPT_CAINFO, "PATH TO FILE\\cacert.pem"); curl_easy_setopt(curl, CURLOPT_CAPATH, "PATH TO FILE\\cacert.pem"); |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| engel lex | 
 
por aclarar un poco ¿Que es "Certificado del emisor"?
 el SSL no es unidireccional, es decir, no es que la pagina te pasa su certificado y listo, sino que es bidireccional, ella te pasa un certificado y tu le pasas uno, ambos son requeridos para el cifrado asimetrico.... El certificado del emisor, es tu certificado, el curl en tu windows aparentemente no lo consigue y por lo tanto no puede terminar el saludo SSL (handshake) lo que propone el-brujo, es la solución oficial, que te descargues el certificado oficial de curl (cacert.pem) y que lo incluyas en el código (CURLOPT_CAINFO y CURLOPT_CAPATH) |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| Usuario887 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
Hola, gracias por su atencion, pero el problema inicial persiste: C:\Users\Programming\Desktop\CURL test>main https://www.google.com/ *   Trying 142.250.185.4:443... * Connected to www.google.com  (142.250.185.4) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: *  CAfile: cacert.pem *  CApath: cacert.pem * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use h2 * Server certificate: *  subject: C=US; ST=California; L=Mountain View; O=Google LLC; CN=www.google.com *  start date: May  3 11:24:19 2021 GMT *  expire date: Jul 26 11:24:18 2021 GMT *  subjectAltName: host "www.google.com"  matched cert's "www.google.com" *  issuer: C=US; O=Google Trust Services; CN=GTS CA 1O1 *  SSL certificate verify ok. * No OCSP response received * Closing connection 0 Failed to get web page: SSL server certificate status verification FAILED C:\Users\Programming\Desktop\CURL test> |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| MinusFour | 
 
Hola,
 gracias por su atencion, pero el problema inicial persiste:
 
 
 No uses: curl_easy_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1);Los servidores de google (o al menos al que estás intentando conectarte) no soportan esa extensión. Edit: ¿O quizás es algo que te haga falta a ti? |  
						| 
								|  |  
								| « Última modificación: 21 Mayo 2021, 20:16 pm por MinusFour » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Usuario887 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
Tienes razon, MinusFour. Ese era el problema.
 Ahora funciona.
 
 Gracias por su atencion.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | CURL PHP
 | OssoH | 2 | 4,118 |  12 Enero 2011, 09:11 am por OssoH
 |  
						|   |   | curl && c++ Programación C/C++
 | darkvidhack | 2 | 3,872 |  14 Agosto 2011, 18:43 pm por darkvidhack
 |  
						|   |   | Hacer cURL en respuesta de cURL para posterior scraping. PHP
 | goditozor | 3 | 5,027 |  1 Septiembre 2014, 20:32 pm por WHK
 |  
						|   |   | pasar archivo de servidor linux a windows con curl Scripting
 | cloyer | 0 | 1,587 |  11 Octubre 2018, 23:51 pm por cloyer
 |  
						|   |   | Descargar con cURL en Windows Dudas Generales
 | Yuki | 3 | 3,080 |  14 Enero 2020, 08:15 am por @XSStringManolo
 |    |