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.

0voto

snukone Points 119

Conversion d'un Java KeyStore (.jks) en un fichier Privacy Enhanced Mail (.pem)

Utilisez keytool pour convertir le JKS en PKCS :

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.pkcs -srcstoretype JKS -deststoretype PKCS12

Convertissez maintenant le PKCS en PEM à l'aide d'openssl :

openssl pkcs12 -in keystore.pkcs -out certificate.pem

-4voto

ingvarha Points 7

Avec les versions modernes de curl, vous pouvez simplement surcharger l'adresse IP à laquelle se connecter, en utilisant --resolve ou --connect-to (curl plus récent que la version 7.49). Cela fonctionne même avec SSL/SNI. Tous les détails sont dans la page de manuel.

Par exemple, pour passer outre le DNS et se connecter à www.example.com avec ssl en utilisant une adresse IP particulière : (Ceci annulera également l'ipv6)

curl --resolve www.example.com:443:192.168.42.2 https://www.example.com/

Autre exemple, pour se connecter à un serveur backend particulier nommé backend1 sur le port 8080

curl --connect-to www.example.com:80:backend1.example.com:8080 http://www.example.com/

N'oubliez pas d'ajouter l'en-tête host si le serveur en a besoin pour répondre correctement :

-H 'Host:www.example.com'

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