199 votes

connexion https en utilisant CURL en ligne de commande

Je suis nouveau dans le monde de Curl et Cacerts et je rencontre un problème lors de la connexion à un serveur. En fait, j'ai besoin de tester la connectivité sur https d'une machine à une autre. J'ai une URL à laquelle je dois me connecter à partir de la machine A (une machine linux). J'ai essayé ceci à l'invite de commande

cmd> curl https://[my domain or IP address]

et a obtenu le résultat suivant :

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

C'est en lisant quelques articles sur Internet que j'ai trouvé ceci :

openssl s_client -connect <domain name or Ip address>:443

et a reçu quelques réponses, dont la certificat du serveur (à l'intérieur de -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- ).

Que dois-je faire maintenant ? Je pense que je vais devoir copier-coller le texte à l'intérieur. BEGIN CERTIFICATE & END CERTIFICATE et l'enregistrer dans un fichier. Mais.., Quel type de fichier doit-il être ? .pem , .crt ?.. Que dois-je faire après cela ?

J'ai essayé ceci - j'ai copié le texte à l'intérieur BEGIN CERTIFICATE & END CERTIFICATE et l'a sauvegardé dans un .crt et l'a nommé my-ca.crt (j'ai aussi essayé la même chose en le nommant comme my-ca.pem fichier) et a ensuite procédé comme suit :

cmd>curl --cacert my-ca.crt https://[my domain or IP address]

Mais j'ai obtenu la même erreur.

6voto

lmiguelmh Points 47

Vous trouverez ici les certificats CA avec les instructions pour télécharger et convertir les certificats CA de Mozilla. . Une fois que vous avez ca-bundle.crt o cacert.pem que vous venez d'utiliser :

curl.exe --cacert cacert.pem https://www.google.com

o

curl.exe --cacert ca-bundle.crt https://www.google.com

2voto

Jasen Points 247

Ayant dignostiqué le problème J'ai pu utiliser le fichier CA par défaut du système existant, sur debian6 c'est :

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

comme Root, cela peut se faire de la manière suivante :

echo curl.cainfo=/etc/ssl/certs/ca-certificates.crt >> /etc/php5/mods-available/curl.ini

puis redémarrer le serveur web.

1voto

Ahmed Ali Points 170

Vous pouvez utiliser ceci

curl_setopt($curl->curl, CURLOPT_SSL_VERIFYPEER, false);

1voto

Tal Haham Points 811

Vous avez besoin de la chaîne de certificats et non d'un seul certificat. Il est facile de l'obtenir en utilisant Firefox :

  1. Ouvrez l'url dans Firefox.
  2. Cliquez sur l'icône de sécurité dans la boîte d'adresse à gauche de l'url.
  3. Cliquez sur connection not secure , more information . Dans le cadre de la security Sélectionnez l'onglet view certificate , faites défiler vers la fin. Suivant download , sélectionnez l'option PEM(chaîne) pour télécharger la chaîne de certificats.

Vous avez maintenant la chaîne de certificats sous forme de fichier que vous pouvez utiliser dans la requête curl après la commande --cacert drapeau :
curl --cacert downloaded.pem -X POST https://the-url-to-access

0voto

SamCyanide Points 323

En ce qui me concerne, je voulais juste tester un site web qui avait une redirection automatique http->https. Je pense que j'avais déjà installé quelques certificats, donc cela seul fonctionne pour moi sur Ubuntu 16.04 avec curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3

curl --proto-default https <target>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X