Cómo corregir un rizo: (60) Certificado SSL: Cadena de certificado no válida al usar sudo

10

Entonces, debido a que la actualización de Mavericks tiene más problemas con los certificados.

Al intentar curvar un archivo de mi servidor web con su certificado autofirmado, estaba recibiendo el error "Certificado SSL: cadena de certificado no válida".

Esto se corrigió agregando el certificado a mi llavero del sistema y configurándolo para permitir siempre SSL, información que encontré here y here .

Esto funciona bien y cuando rizo un archivo, se descarga correctamente.

Sin embargo, si ejecuto curl con sudo antes (por ejemplo, tengo un script que debe ejecutarse con sudo y hace un curl en él) entonces vuelvo al mismo mensaje de error.

¿Supongo que la raíz no se lee del llavero del sistema quizás?

¿Alguien sabe una manera de solucionar esto?

    
pregunta Jacob Tomlinson 21.02.2014 - 17:36

7 respuestas

13

Si almacena sus certificados de CA en el sistema de archivos (en formato PEM) puede decirle a curl que los use con

sudo curl --cacert /path/to/cacert.pem ...

También puede desactivar la verificación del certificado con

sudo curl --insecure ...

Editar: actualizado con respecto a los comentarios

Si desea establecer esto de forma permanente, debe crear un archivo .curlrc y colocarlo en su directorio de inicio. Los comandos sudo pueden necesitar este archivo en /var/root El archivo toma las mismas opciones que la línea de comandos pero sin los guiones. Una opción por línea:

cacert=/path/to/my/certs.pem
    
respondido por el Dan 28.02.2014 - 12:46
5

La raíz no lee la configuración de confianza del usuario actual, pero hay una configuración de confianza del administrador y una configuración de confianza específica del usuario raíz. (Estos también son distintos de la configuración de confianza del sistema ). Tenga en cuenta, además, que la configuración de la confianza del certificado es algo diferente de simplemente agregar un certificado a un llavero; Puede marcar un certificado como de confianza sin agregarlo completamente. (La situación exacta aquí no está clara para mí, y los documentos que he visto son vagos).

Puede marcar un certificado como de confianza para su usuario actual como

$ security add-trusted-cert /path/to/cert.pem

pero eso no ayuda con la raíz. La solución, como puede suponer ahora, es a sudo lo anterior, que luego lo marca como de confianza para el usuario root específicamente:

$ sudo security add-trusted-cert /path/to/cert.pem

o para usar el indicador -d para agregarlo a la configuración de confianza del administrador:

$ security add-trusted-cert -d /path/to/cert.pem

(OS X abrirá un diálogo de contraseña para confirmar este).

Cualquiera de los dos últimos parece ser suficiente para sudo curl .

Referencia: enlace

    
respondido por el Wes Campaigne 02.03.2014 - 02:38
3

Esto está realmente en la sugerencia de salida:

echo insecure >> ~/.curlrc

La ventaja de usar la solución anterior es que funciona para todos los comandos curl , pero no se recomienda ya que puede introducir ataques MITM al conectarse a hosts inseguros y no confiables.

    
respondido por el zinking 19.09.2014 - 06:35
1

Si usa MacPorts (y el script de terceros que mencionó no lo elimina de $PATH o llama a /usr/bin/curl ) puede instalar los puertos certsync y curl en este orden.

certsync es una herramienta y una lista correspondiente de launchd que exportará su llavero del sistema a $prefix/etc/openssl/cert.pem e instalará un enlace simbólico $prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem para que MacPorts curl recoja los certificados automáticamente. certsync también actualizará automáticamente los archivos generados cuando cambie el llavero de su sistema.

    
respondido por el neverpanic 04.03.2014 - 02:14
0

La documentación que busca está aquí. Explica cómo usar cURL en Mavericks y cómo suministrar sus certificados: enlace

    
respondido por el Fabian Frank 23.04.2014 - 01:26
0

Para hacer que sudo curl funcione (en OSX Sierra), tuvimos que importar el certificado al System.keychain y confiarlo allí. Esto se puede hacer manualmente en la aplicación Keychain o usando este comando:

sudo security add-trusted-cert -d -k /Library/Keychains/System.keychain /path/to/cert.pem

Era importante tanto especificar -d como configurar manualmente la ruta al llavero del sistema a través de -k para asegurarse de que el certificado realmente se importa allí si aún no lo está.

El comando funciona sin sudo , pero luego solicita la contraseña a través de un diálogo de IU, lo que podría ser un obstáculo para los scripts.

    
respondido por el Alexander Klimetschek 30.11.2016 - 01:55
-1

Una forma de solucionar esto es dejar que curl ignore por completo la verificación de la cadena de certificados:

$ sudo curl -k https://example.com
    
respondido por el Tair 28.02.2014 - 20:23

Lea otras preguntas en las etiquetas