2011-09-16 14 views
8

Mi código está intentando acceder a un servidor HTTPS y tiene su propio certificado. Ejemplo, la IP es "10.0.1.101".Cómo hacer que se vea libcurl en el Mac Llavero para certificados

Si voy a Safari y tengo acceso a "http://10.0.1.101", todo está bien. Hago un simple curl_easy_perform() para esta URL y los datos se pueden extraer de la URL HTTP. Guay.

Intento acceder a "https://10.0.1.101" (sí, HTTPS) y desde Safari, acepto el certificado y le doy la opción de "confianza" y después de eso, el acceso de Safari a la URL de HTTPS es DE ACUERDO.

El certificado se ha agregado al Mac Keychain pero cuando pruebo un curl_easy_perform() en el URL HTTPS, todavía devuelve un CURLE_SSL_CACERT. libcurl no pudo autenticar el certificado HTTPS con certificados de CA conocidos.

¿Cuál es el eslabón perdido entre la verificación de certificados de libcurl y Mac Keychain? ¿Hay incluso un enlace? ¿Es posible hacer que libcurl busque en Mac Keychain para certificados? ¿Si es así, cómo?

+0

¿Podemos usar la opción CURLOPT_CAINFO para apuntar a un archivo de llavero? – radj

+1

Hay un comando 'security' en la terminal, creo que puede usar el resultado de ese comando para obtener la cadena de confianza. (No soy un certificado o un experto en terminales, intenté en un guión y funciona con curl) –

+0

@Marcelo Alves, gracias. Parece un buen punto de partida, pero si puedes, ¿vas a compartir los pasos de cómo lo hiciste? – radj

Respuesta

2

Nope. libcurl construido para usar OpenSSL solo leerá certificados de CA de un único archivo PEM o de un directorio de certificados de CA que se hayan preparado con estilo OpenSSL.

No hay magia especial para el Mac Keychain implementado.

+2

¿De verdad? Bueno, esto es * raro *. Mi máquina que ejecuta Mountain Lion "simplemente funciona" y reconoce el certificado, pero mi máquina con Yosemite es * no ir *. – Michael

Cuestiones relacionadas