Come risolvere arricciatura: (60) Certificato SSL: catena di certificati non valida quando si utilizza sudo

10

Quindi, poiché il ricciolo di upgrade di Mavericks ha più problemi con i certificati.

Durante il tentativo di arricciare un file dal mio server web con il suo certificato autofirmato si stava verificando l'errore "Certificato SSL: catena di certificati non valida".

Questo è stato corretto aggiungendo il certificato al portachiavi del mio sistema e impostandolo per consentire sempre SSL, informazioni che ho trovato qui e qui .

Funziona bene e quando arriccia un file viene scaricato correttamente.

Tuttavia, se eseguo curl con sudo prima (ad esempio, ho uno script che deve essere eseguito con sudo e contiene un ricciolo), quindi torno allo stesso messaggio di errore.

Suppongo che root non legga forse dal portachiavi del sistema?

Qualcuno sa come risolvere questo problema?

    
posta Jacob Tomlinson 21.02.2014 - 17:36
fonte

7 risposte

13

Se archivi i certificati CA sul filesystem (in formato PEM) puoi dire a curl di usarli con

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

Puoi anche disattivare la verifica del certificato con

sudo curl --insecure ...

Modifica: aggiornato in relazione al feedback

Se vuoi impostarlo permanentemente, devi creare un file .curlrc e metterlo nella tua home directory. sudo comandi potrebbero aver bisogno di questo file in /var/root Il file prende le stesse opzioni della riga di comando ma senza i trattini. Un'opzione per riga:

cacert=/path/to/my/certs.pem
    
risposta data 28.02.2014 - 12:46
fonte
5

Root non legge dalle impostazioni di attendibilità dell'utente correnti, ma ci sono sia le impostazioni di trust di amministratore che le impostazioni di fiducia specifiche dell'utente root. (Queste sono anche distinte dalle impostazioni di trust system .) Nota anche che le impostazioni di trust del certificato sono in qualche modo distinte dall'aggiunta di un certificato a un portachiavi; puoi contrassegnare un certificato come affidabile senza aggiungerlo completamente. (La situazione esatta qui non mi è chiara, e i documenti che ho visto sono vaghi.)

Puoi contrassegnare un certificato come attendibile per il tuo utente corrente come

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

ma ciò non aiuta con root. La soluzione, come si potrebbe ora intuire, è o a sudo sopra, che quindi contrassegna come affidabile per l'utente root in particolare:

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

o per utilizzare il flag -d per aggiungerlo alle impostazioni di trust dell'amministratore:

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

(OS X farà apparire una finestra di dialogo per confermare questo.)

Ciascuno degli ultimi due sembra essere sufficiente per sudo curl .

Riferimento: link

    
risposta data 02.03.2014 - 02:38
fonte
3

Questo è veramente nel suggerimento di output:

echo insecure >> ~/.curlrc

Il vantaggio dell'utilizzo della soluzione di cui sopra è che funziona per tutti i comandi curl , ma non è raccomandato poiché potrebbe introdurre Attacchi MITM connettendosi ad host non sicuri e non fidati.

    
risposta data 19.09.2014 - 06:35
fonte
1

Se usi MacPorts (e lo script di terze parti che hai menzionato non lo rimuove da $PATH o chiama /usr/bin/curl ) puoi installare le porte certsync e curl in questo ordine.

certsync è uno strumento e un plist di lancio corrispondente che esporterà il portachiavi del sistema a $prefix/etc/openssl/cert.pem e installerà un link simbolico $prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem , in modo che MacPorts arricchi automaticamente i certificati. certsync aggiornerà automaticamente anche i file generati quando cambi il portachiavi del sistema.

    
risposta data 04.03.2014 - 02:14
fonte
0

La documentazione che stai cercando è qui. Spiega come usare cURL su Mavericks e come fornire i tuoi certificati: link

    
risposta data 23.04.2014 - 01:26
fonte
0

Per fare in modo che sudo curl funzioni (su OSX Sierra), abbiamo dovuto importare il certificato in System.keychain e fidarci di esso. Questo potrebbe essere fatto manualmente nell'app Portachiavi o usando questo comando:

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

Era importante specificare entrambi -d e impostare manualmente il percorso del portachiavi del sistema tramite -k per assicurarti che il certificato venga effettivamente importato lì, se non lo è ancora.

Il comando funziona senza sudo , ma poi chiederebbe la password tramite una finestra di dialogo dell'interfaccia utente, che potrebbe essere un ostacolo per gli script.

    
risposta data 30.11.2016 - 01:55
fonte
-1

Un modo per risolvere questo problema è lasciare che curl ignori del tutto il controllo della catena di certificati:

$ sudo curl -k https://example.com
    
risposta data 28.02.2014 - 20:23
fonte

Leggi altre domande sui tag