[Api] Come faccio a gestire i certificati utilizzando cURL mentre provo ad accedere a un URL HTTPS?



Answers

Ho anche installato la versione più recente di ca-certificates, ma continuava a ricevere l'errore:

curl: (77) error setting certificate verify locations:
  CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none

Il problema era che il riccio si aspettava che il certificato si /etc/pki/tls/certs/ca-bundle.crt sul percorso /etc/pki/tls/certs/ca-bundle.crt ma non lo trovasse perché si trovava sul percorso /etc/ssl/certs/ca-certificates.crt .

Copiando il mio certificato sulla destinazione prevista eseguendo

sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

ha funzionato per me Sarà necessario creare cartelle per la destinazione di destinazione se non esistono eseguendo

sudo mkdir -p /etc/pki/tls/certs

Se necessario, modificare il comando precedente per fare in modo che il nome del file di destinazione corrisponda al percorso previsto da curl, ovvero sostituire /etc/pki/tls/certs/ca-bundle.crt con il percorso che segue "CAfile:" nel messaggio di errore.

Question

Sto ottenendo il seguente errore usando curl:

curl: (77) error setting certificate verify locations:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none

Come posso impostare questo luogo di verifica del certificato? Grazie.




Un'altra alternativa per risolvere questo problema è disabilitare la convalida del certificato:

echo insecure >> ~/.curlrc



arricciatura esegue la verifica del certificato SSL per impostazione predefinita, utilizzando un "pacchetto" di chiavi pubbliche Certificate Authority (CA) CA). Il pacchetto predefinito è denominato curl-ca-bundle.crt; puoi specificare un file alternativo usando l'opzione --cacert.

Se questo server HTTPS utilizza un certificato firmato da una CA rappresentata nel pacchetto, la verifica del certificato probabilmente non è riuscita a causa di un problema con il certificato (potrebbe essere scaduto o il nome potrebbe non corrispondere al nome di dominio nell'URL).

Se desideri disattivare la verifica del certificato da parte di curl, usa l'opzione -k (o --insecure ).

per esempio

curl --insecure http://........



Da $ man curl :

--cert-type <type>
    (SSL) Tells curl what certificate type the provided  certificate
    is in. PEM, DER and ENG are recognized types.  If not specified,
    PEM is assumed.

    If this option is used several times, the last one will be used.

--cacert <CA certificate>
    (SSL) Tells curl to use the specified certificate file to verify
    the peer. The file may contain  multiple  CA  certificates.  The
    certificate(s)  must be in PEM format. Normally curl is built to
    use a default file for this, so this option is typically used to
    alter that default file.



L'errore è dovuto a file di certificati della catena SSL corrotti o mancanti nella directory PKI. Dovrai assicurarti che i file siano raggruppati, seguendo i passaggi: Nella tua console / terminale:

mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates

Inserisci questo sito: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates , ottieni il tuo ca-certificato, per SO. Copia url di download e incolla in url: wget your_url_donwload_ca-ceritificated.rpm ora, installa yout rpm:

rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv

ora riavvia il tuo servizio: il mio esempio questo comando:

sudo service2 httpd restart






Ho avuto lo stesso identico problema. A quanto pare, il mio file /etc/ssl/certs/ca-certificates.crt era /etc/ssl/certs/ca-certificates.crt . L'ultima voce ha mostrato qualcosa di simile a questo:

-----BEGIN CERTIFICATE-----
MIIEDTCCAvWgAwIBAgIJAN..lots of certificate text....AwIBAgIJAN-----END CERTIFICATE-----

Dopo aver aggiunto una nuova riga prima -----END CERTIFICATE----- , curl è stato in grado di gestire il file dei certificati.

Questo è stato molto fastidioso da scoprire dal momento che il mio comando update-ca-certificates non mi dava alcun avvertimento.

Questo può o non può essere un problema specifico della versione di arricciatura, quindi ecco la mia versione, solo per completezza:

curl --version
# curl 7.51.0 (x86_64-alpine-linux-musl) libcurl/7.51.0 OpenSSL/1.0.2j zlib/1.2.8 libssh2/1.7.0
# Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
# Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 



Crea un file ~/.curlrc con il seguente contenuto

cacert=/etc/ssl/certs/ca-certificates.crt



Sembra che il tuo ricciolo punti a un file non esistente con certificati CA o simili.

Per il riferimento principale sui certificati CA con arricciatura, consultare: https://curl.haxx.se/docs/sslcerts.html




Links