web-dev-qa-db-fra.com

Utilisation de curl -with --cert

J'utilise cUrl pour demander des données à un site Web d'entreprise à l'aide d'un certificat .cer qu'ils m'ont envoyé. Voici la commande:

cUrl --header "Content-Type: text/xml;charset=UTF-8" \
     --data @bustaRequestISEE2015ConsultazioneAttestazione.xml \
     -o bustaResponseISEE2015ConsultazioneAttestazione.xml \
     --cert ./caaffabisrl.cer \
     https://istitutonazionaleprevidenzasociale.spcoop.gov.it/PD

Lorsque je l'exécute, j'obtiens ce message d'erreur:

curl: (58) n'a pas pu charger le certificat client PEM, erreur d'erreur OpenSSL: 0906D06C: routines PEM: PEM_read_bio: pas de ligne de départ, (pas de clé trouvée, phrase de passe incorrecte ou format de fichier wro ng?)

Y a-t-il quelqu'un qui peut m'aider?

Tks, Cristiano.

5

Il n'est pas possible de se connecter à un serveur TLS avec curl en utilisant uniquement un certificat client, sans la clé privée du client. Soit ils ont oublié de vous envoyer le fichier de clé privée, soit ce qu'ils vous ont envoyé n'était pas le certificat client mais le certificat serveur pour vérification.

La première chose que j'essaierais est d'utiliser --cacert au lieu de --cert. Autrement dit, indiquez à curl qu'il s'agit du certificat du serveur que curl peut utiliser pour vérifier que le serveur est bien celui que vous pensez être.

Vous pouvez également essayer de supprimer --cert et ne pas utiliser --cacert, et vous obtiendrez probablement une erreur indiquant que le serveur n'est pas approuvé. Ajoutez ensuite le --insecure argument et voir si cela fonctionne. Je ne garderais pas cet argument, car alors vous n'avez aucune preuve de qui vous parlez.

Je suppose que c'est le certificat du serveur et que l'utilisation de --cacert au lieu de --cert résoudra le problème.

5
Jim Flood

Je suppose que votre fichier de certificat est un certificat binaire codé DER au lieu d'un certificat codé en base 64. Pour convertir le binaire en base 64, vous pouvez utiliser OpenSSL.

openssl x509 -inform der -in certificate.cer -out certificate.pem

J'oublie toujours tous les arguments et ai le site suivant mis en signet, car il donne des exemples de la façon de convertir à peu près n'importe quel format de certificat. https://www.sslshopper.com/ssl-converter.html

2
kah608