2016-05-31 1 views
3

J'ai une application de ligne de commande qui utilise les dll libcurl-4, et actuellement je peux tout faire fonctionner en plaçant mes certificats CA dans mon répertoire de travail et en passant leurs noms aux CUTLOPT_CAINFO et CURLOPT_SSLCERT avec le préfixe ./ à leurs noms. Mais, sur quoi je travaille, cURL n'utilise pas ce qui est dans le répertoire courant et utilise plutôt les certs qui sont stockés dans le système de mon ordinateur. A la lecture de la documentation de cURL, je comprends que si vous le configurez sans donner de valeur par défaut ca-bundle ou ca-path qui ti "détectera automatiquement un réglage".Configurer cURL pour utiliser le magasin de certificats système par défaut

Et que le CURLOPT_CAINFO est par défaut réglé sur « système intégré spécifique »

Alors quelqu'un peut me aider à comprendre: si rien n'est spécifié

  1. au moment de la configuration avec boucle, est le chemin par défaut, il détecte le magasin du système? Ou curl utilise-t-il son propre chemin pour un système de stockage?

  2. quelle valeur donnez-vous à curl_easy_setopt(m_curlHandle, CURLOPT_CAINFO, *<value>) pour que CURLOPT_CAINFO utilise sa valeur par défaut?

Toute aide est appréciée car j'apprends encore comment tout cela fonctionne.

Merci. OpenSSL ne prend pas en charge l'utilisation du "magasin de certificats CA" que Windows possède seul.

Répondre

3

Si vous voulez que votre construction curl utilise ce magasin de cert, vous devez reconstruire curl pour utiliser le backend schannel à la place, qui est la version native de Windows qui utilise également le magasin de certificats Windows par défaut. Si vous décidez de continuer à utiliser OpenSSL, vous devez simplement fournir des certificats CA soit dans un fichier PEM, soit dans un répertoire spécialement conçu, car Windows ne fournit pas son système de stockage en utilisant ce format. ou découvrez comment convertir le magasin de certificats Windows au format PEM.

+0

Oui, merci pour votre aide. Plus tard, hier, j'ai découvert qu'OpenSSL ne supporte pas le système de stockage et a depuis construit cURL pour utiliser winssl. Cependant, j'ai maintenant des problèmes avec la négociation SSL/TLS et la réception de l'erreur http 35. Après avoir lu le fichier schannel.c, je suis tombé sur ce qui me semble être le problème avec schannel ne voulant pas envoyer le certificat client . (voir ligne 495) –