J'ai besoin de spécifier un certificat avec CURL j'ai essayé avec l'option --cert cela ne fonctionne pas.
Pourriez-vous s'il vous plaît laissez-moi savoir pour spécifier le keystore et passpharse lors de l'appel avec curl?
Devrait être:
curl --cert certificate_file.pem:password https://www.example.com/some_protected_page
Je suis passé par là lorsque j'essayais d'obtenir un clientcert et une clé privée d'un magasin de clés.
Le lien ci-dessus publié par welsh était génial, mais il y avait une étape supplémentaire sur ma distribution de redhat. Si curl est construit avec NSS (exécutez curl --version
pour voir si NSS figure dans la liste), vous devez alors importer les clés dans un magasin de clés NSS. J'ai traversé un tas d'étapes alambiquées, donc ce n'est peut-être pas la façon la plus propre, mais ça a fait fonctionner
Exportez donc les clés en .p12
keytool -importkeystore -srckeystore $jksfile -destkeystore $p12file \ -srcstoretype JKS -deststoretype PKCS12 \ -srcstorepass $jkspassword -deststorepass $p12password -srcalias $myalias -destalias $myalias \ -srckeypass $keypass -destkeypass $keypass -noprompt
Et générez le fichier pem qui ne contient que la clé
echo making ${fileroot}.key.pem openssl pkcs12 -in $p12 -out ${fileroot}.key.pem \ -passin pass:$p12password \ -passout pass:$p12password -nocerts
mkdir ~/nss chmod 700 ~/nss certutil -N -d ~/nss
pks12util -i <mykeys>.p12 -d ~/nss -W <password for cert >
Maintenant, la boucle devrait fonctionner.
curl --insecure --cert <client cert alias>:<password for cert> \ --key ${fileroot}.key.pem <URL>
Comme je l'ai mentionné, il peut y avoir d'autres façons de le faire, mais au moins c'était reproductible pour moi. Si curl est compilé avec le support NSS, je n'ai pas pu l'obtenir pour extraire le certificat client d'un fichier.
Outre la réponse précédente, assurez-vous que votre installation curl prend en charge https.
Vous pouvez utiliser curl --version
pour obtenir des informations sur les protocoles pris en charge.
Si votre boucle prend en charge https, suivez la réponse précédente.
curl --cert certificate_path: mot de passe https://www.example.com
S'il ne prend pas en charge https, vous devez installer une version cURL qui prend en charge https.