root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
* Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
curl
ssl
openssl
ssl-certificate
x509certificate
user3812540
la source
la source
Réponses:
Relatif à l'erreur «Problème de certificat SSL: impossible d'obtenir le certificat d'émetteur local». Il est important de noter que cela s'applique au système envoyant la demande CURL et NON au serveur recevant la demande.
Téléchargez le dernier cacert.pem depuis https://curl.haxx.se/ca/cacert.pem
Ajoutez la ligne suivante à php.ini: (s'il s'agit d'un hébergement partagé et que vous n'avez pas accès à php.ini, vous pouvez l'ajouter à .user.ini dans public_html).
curl.cainfo="/path/to/downloaded/cacert.pem"
Assurez-vous de placer le chemin entre guillemets doubles !!!
Par défaut, le processus FastCGI analysera les nouveaux fichiers toutes les 300 secondes (si nécessaire, vous pouvez modifier la fréquence en ajoutant quelques fichiers comme suggéré ici https://ss88.uk/blog/fast-cgi-and-user-ini- files-the-new-htaccess / ).
la source
curl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Il échoue car cURL ne peut pas vérifier le certificat fourni par le serveur.
Il existe deux options pour que cela fonctionne:
Utilisez cURL avec l'
-k
option qui permet à curl d'établir des connexions non sécurisées, c'est-à-dire que cURL ne vérifie pas le certificat.Ajoutez l'autorité de certification racine (l'autorité de certification signant le certificat de serveur) à
/etc/ssl/certs/ca-certificates.crt
Vous devez utiliser l'option 2 car c'est l'option qui garantit que vous vous connectez au serveur FTP sécurisé.
la source
J'ai résolu ce problème en ajoutant un code de ligne dans le script cURL:
Avertissement : cela rend la demande absolument non sécurisée (voir la réponse de @YSU)!
la source
if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Dans mon cas, cela s'est avéré être un problème avec l'installation de mon certificat sur le service que j'essayais de consommer avec cURL. J'ai échoué à regrouper / concaténer les certificats intermédiaires et racine dans mon certificat de domaine . Au début, il n'était pas évident que c'était le problème, car Chrome avait bien fonctionné et accepté le certificat malgré l'omission des certificats intermédiaire et racine.
Après avoir regroupé le certificat, tout a fonctionné comme prévu. J'ai groupé comme ça
Et répété pour tous les intermédiaires et le certificat racine.
la source
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
dans votre bundle, et vous obtiendrez l'erreur obscure:curl: (77) error setting certificate verify locations
Pour moi, une simple installation de certificats a aidé:
la source
Eu ce problème après l'installation de Git Extensions v3.48. J'ai essayé d'installer à nouveau mysysgit mais même problème. À la fin, j'ai dû désactiver (veuillez considérer les implications de sécurité!) Git SSL verification with:
mais si vous avez un certificat de domaine, ajoutez-le à (Win7)
la source
--global
d'avoir SSL désactivé uniquement pour le référentiel où vous avez des problèmes. Voir groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw pour une discussion sur les fichiers crt nécessaires actuels.Nous avons rencontré cette erreur récemment. Il s'avère que cela était lié au fait que le certificat racine n'était pas installé correctement dans le répertoire du magasin de CA. J'utilisais une commande curl où je spécifiais directement le répertoire CA.
curl --cacert /etc/test/server.pem --capath /etc/test ...
Cette commande échouait à chaque fois avec curl: (60) Problème de certificat SSL: impossible d'obtenir le certificat d'émetteur local.Après utilisation
strace curl ...
, il a été déterminé que curl recherchait le fichier de certificat racine avec un nom de 60ff2731.0, qui est basé sur une convétion de nommage de hachage openssl. J'ai donc trouvé cette commande pour importer correctement le certificat racine correctement:qui crée un softlink
curl, sous les couvertures, lit le certificat server.pem, détermine le nom du fichier de certificat racine (rootcert.pem), le convertit en son nom de hachage, puis effectue une recherche de fichier OS, mais ne le trouve pas.
Donc, la conclusion est, utilisez strace lors de l'exécution de curl lorsque l'erreur curl est obscure (était une aide considérable), puis assurez-vous d'installer correctement le certificat racine en utilisant la convention de dénomination openssl.
la source
Il s'agit très probablement d'un certificat manquant du serveur.
Racine-> Intermédiaire-> Serveur
Un serveur doit envoyer le serveur et l'intermédiaire au minimum.
Utilisez
openssl s_client -showcerts -starttls ftp -crlf -connect abc:21
pour déboguer le problème.Si un seul certificat est retourné (auto-signé ou émis), vous devez choisir:
curl -k
(très mauvaise idée)Si le serveur est retourné, plusieurs, mais sans inclure un certificat auto-signé (root):
Si le serveur a renvoyé un certificat d'autorité de certification racine, il ne se trouve pas dans votre magasin d'autorités de certification, vos options sont les suivantes:
J'ai ignoré les certificats expirés / révoqués car aucun message ne l'indiquait. Mais vous pouvez examiner les certificats avec
openssl x509 -text
Étant donné que vous vous connectez à une édition familiale ( https://www.cerberusftp.com/support/help/installing-a-certificate/ serveur ftp de l' ), je vais dire qu'il est auto-signé.
Veuillez poster plus de détails, comme la sortie de openssl.
la source
Selon les documents cURL, vous pouvez également passer le certificat à la
curl
commande:Par exemple:
la source
Il suffit peut-être de simplement mettre à jour la liste des certificats
la source
Essayez de réinstaller curl dans Ubuntu et de mettre à jour mes certificats CA avec
sudo update-ca-certificates --fresh
lesquels les certificats ont été mis à jourla source
Sur Windows, j'avais ce problème. Curl a été installé par mysysgit, donc le téléchargement et l'installation de la dernière version ont résolu mon problème.
Sinon, ce sont des instructions décentes sur la façon de mettre à jour votre certificat CA que vous pouvez essayer.
la source
Oui, vous devez également ajouter un certificat CA. Ajout d'un extrait de code dans Node.js pour une vue claire.
la source
J'ai également rencontré ce problème. J'ai lu ce fil et la plupart des réponses sont informatives mais trop complexes pour moi. Je ne suis pas expérimenté dans les sujets de réseautage, donc cette réponse s'adresse à des gens comme moi.
Dans mon cas, cette erreur s'est produite car je n'ai pas inclus les certificats intermédiaire et racine à côté du certificat que j'utilisais dans ma demande.
Voici ce que j'ai obtenu du fournisseur de certificats SSL:
Dans le
abc.crt
dossier, il n'y avait qu'un seul certificat:Si je le fournissais dans ce format, le navigateur ne montrerait aucune erreur (Firefox) mais j'obtiendrais
curl: (60) SSL certificate : unable to get local issuer certificate
erreur lorsque je la demande de curl.Pour corriger cette erreur, vérifiez votre
abc-bunde.crt
fichier. Vous verrez très probablement quelque chose comme ceci:Ce sont vos certificats intermédiaires et racine. Une erreur se produit car ils sont manquants dans le certificat SSL que vous fournissez à votre application.
Pour corriger l'erreur, combinez le contenu de ces deux fichiers dans ce format:
Notez qu'il n'y a aucun espace entre les certificats, à la fin ou au début du fichier. Une fois que vous avez fourni ce certificat combiné à votre application, votre problème devrait être résolu.
la source
Sur Windows - si vous exécutez à partir de cmd
Téléchargez cacert.pem depuis https://curl.haxx.se/docs/caextract.html
Définir la variable d'environnement:
et recharger l'environnement
Maintenant réessayez
Raison du problème: https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/95548
la source
Mon cas était différent. J'héberge un site derrière un pare-feu. L'erreur a été provoquée par pfSense.
J'ai accidentellement trouvé la cause, grâce à cette réponse .
Tout va bien lorsque j'ai accédé à mon site depuis l'AMJ.
Cependant, lorsque le site est accessible depuis un réseau local (par exemple, lorsque Wordpress fait une
curl
demande à son propre serveur, malgré l'utilisation de l'adresse IP WAN49.x.x.x
), la page de connexion pfSense lui a été envoyée.J'ai identifié le certificat comme
pfSense webConfigurator Self-Signed Certificate
. Pas étonnant qu'il aitcurl
jeté une erreur.Cause: ce qui s'est passé, c'est que vous
curl
utilisiez l'adresse IP WAN du site49.x.x.x
. Mais, dans le contexte du serveur Web, l'IP WAN était le pare-feu.Déboguer: j'ai constaté que j'obtenais le certificat pfSense.
Solution: sur le serveur hébergeant le site, pointez son propre nom de domaine vers 127.0.0.1
En appliquant la solution,
curl
la demande de a été correctement gérée par le serveur Web et n'a pas été transmise au pare-feu qui a répondu en envoyant la page de connexion.la source
Il s'agit d'un problème de magasin de certificats ssh. Vous devez télécharger le fichier pem de certificat valide à partir du site Web de l'autorité de certification cible, puis créer le fichier de lien logiciel pour indiquer à SSL le certificat de confiance.
openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem
tu auras
dd8e9d41
construire un lien solf avec un numéro de hachage et suffixer le fichier avec un .0 (point zéro)
dd8e9d41.0
Réessayez ensuite.
la source
Téléchargez https://curl.haxx.se/ca/cacert.pem
Après le téléchargement, déplacez ce fichier sur votre serveur Wamp.
Pour exp: D: \ wamp \ bin \ php \
Ajoutez ensuite la ligne suivante au fichier php.ini en bas.
curl.cainfo = "D: \ wamp \ bin \ php \ cacert.pem"
la source
Vous devez changer le certificat du serveur de
cert.pem
àfullchain.pem
J'ai eu le même problème avec Perl HTTPS Daemon:
J'ai changé:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'
en:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'
la source
Jusqu'à présent, j'ai vu ce problème se produire dans les réseaux d'entreprise pour deux raisons, l'une ou les deux pouvant se produire dans votre cas:
En guise de remarque, le n ° 2 ci-dessus peut vous inquiéter du fait que votre trafic TLS supposément sécurisé soit analysé. C'est le monde de l'entreprise pour vous.
la source
Eu ce problème et il n'a pas été résolu avec une version plus récente. / etc / certs avait le certificat racine, le navigateur a dit que tout allait bien. Après quelques tests, j'ai reçu de ssllabs.com l'avertissement, que ma chaîne n'était pas complète (en effet, c'était la chaîne pour l'ancien certificat et non le nouveau). Après avoir corrigé la chaîne cert, tout allait bien, même avec une boucle.
la source
J'ai eu ce problème avec Digicert de toutes les autorités de certification. J'ai créé un fichier digicertca.pem qui était à la fois intermédiaire et racine collé ensemble dans un seul fichier.
Eorekan avait la réponse, mais seulement moi et un autre pour voter sa réponse.
la source
Spécifiquement pour les
Windows
utilisateurs, utilisantcurl-7.57.0-win64-mingw
ou version similaire.C'est un peu tard et les réponses existantes sont correctes. Mais j'ai encore eu du mal à le faire fonctionner sur ma machine Windows, bien que le processus soit en fait assez simple. Donc, partager le processus étape par étape.
Cette erreur signifie essentiellement que curl ne parvient pas à vérifier le certificat de l'URI cible. Si vous faites confiance à l'émetteur du certificat (CA), vous pouvez l'ajouter à la liste des certificats approuvés.
Pour cela, parcourez l'URI (par exemple sur Chrome) et suivez les étapes
.cer
fichier et copiez le contenu (y compris ----- BEGIN CERTIFICATE ----- et ----- END CERTIFICATE -----)curl.exe
est enregistré par exempleC:\SomeFolder\curl-7.57.0-win64-mingw\bin
curl-ca-bundle.crt
fichier avec un éditeur de texteMaintenant, votre commande devrait s'exécuter correctement en boucle.
la source
cela peut vous aider à mieux comprendre:
testé sur guzzle / guzzle 3. *
la source
Solution simple: IN
~/.sdkman/etc/config
, changesdkman_insecure_ssl=true
Étapes:
nano
~/.sdkman/etc/config
changement
sdkman_insecure_ssl=false
poursdkman_insecure_ssl=true
enregistrer et quitter
la source