Comment puis-je maintenir mon cacert.pem à jour pour des raisons de sécurité lors de l'utilisation de curl ?

StackOverflow https://stackoverflow.com//questions/23032165

Question

Je souhaite conserver mes certificats racine à jour pour les utiliser avec cURL et les certificats internes de PHP. curl commande, cependant, il n'existe actuellement aucun paramètre permettant de télécharger le fichier actuel dont il a besoin pour une connexion sécurisée appropriée et de le maintenir à jour.

Et exemple d'utilisation curl en PHP pour une connexion sécurisée qui nécessite un fichier nommé cacert.pem (Chaîne de certificats encodée PEM pour valider les connexions distantes) est la suivante :

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
if (!($data = curl_exec($ch))) {
    echo "No data received";
} else {
    echo strlen($data) + " total byte(s)";
}
curl_close($ch);

Alors que la plupart des gens se contentent de définir CURLOPT_SSL_VERIFYPEER à faux, et donc ignorer le problème, ce qui est mauvais .Tu peux voyez ici où une autorité de certification montre que si vous n'avez pas ce fichier à jour, la seule façon de vous connecter à un serveur sécurisé est de désactiver la vérification des certificats et vous avertit en outre des implications de la désactivation de la vérification par les pairs..

Ce que je demande, c'est un moyen légitime de conserver une copie locale de cacert.pem de sorte que lorsque j'utilise curl en PHP pour communiquer avec d'autres serveurs, je peux continuer à le faire en toute sécurité .

Il ne s'agit pas d'une demande de ressource externe ou d'un lien hors site, etc. Cependant, en raison de la nature du problème, il s'agit probablement du SEUL moyen de résoudre ce problème, car cela nécessiterait une mise à jour continue à mesure que les chaînes de certificats sont révoquées.À ce jour, il n'existe aucun moyen d'obtenir ce fichier ni dans le cadre de la distribution de curl lui-même, ni de php, ni de la bibliothèque curl pour php et de continuer à le maintenir.Bien qu'il soit décourageant de constater qu'il ne s'agit pas d'une simple commande de mise à jour comme curl --update-root-ca ce serait bien, cela n’existe sous aucune forme.

Était-ce utile?

La solution

Depuis la rédaction initiale de cet article (et donc de cette réécriture), j'ai pu résoudre mon propre problème en incluant des liens directement vers le seulement source légitime pour maintenir ce fichier qui est fourni sur le site maintenu par l'auteur de curl à ce lieu

De plus, à mesure que la technologie progresse, cette question a été mise à jour pour montrer comment utiliser curl en PHP et forcer la connexion TLS v1.2 (ce que certains fournisseurs de transactions exigent ou recommandent et peuvent ne pas fournir d'informations sur la façon de procéder).

Concernant les autorités de certification, il existe quelques autorités racines clés telles que :

  • Symantec
  • RapideSSL
  • décongeler
  • GéoConfiance
  • Comodo

Ainsi que d'autres autorités de par leur nature telles que

  • Microsoft
  • Mozilla
  • Google

Ce qui peut être un cadre pour quiconque cherche à maintenir son propre cacert.pem.Gardez à l'esprit que vous devrez télécharger leurs listes de révocation (certificats qui ont été violés ou expirés) à partir des CRL respectives pour maintenir un mécanisme de confiance approprié, alors que vous devriez pouvoir vous en sortir en téléchargeant simplement leurs chaînes de certificats racine et en les utilisant. en tant que fichier local faisant autorité sous le nom de cacert.pem.

Autres conseils

cacert.pem est utilisé par curl.Il n’existe pas d’autorité ultime à laquelle faire confiance aux certificats, mais les listes utilisées par les navigateurs Web sont une bonne source.Ces listes sont constamment mises à jour en raison des changements apportés à l'autorité de certification et aux pratiques de sécurité.

Les auteurs de curl maintenir un outil capable d'extraire un cacert.pem depuis Firefox et publiez une sortie raisonnablement à jour sur leur site :

  • cacert.pem généré par les auteurs de curl
  • caextrait:pour les plus soucieux de leur sécurité, téléchargez l'outil, inspectez le code source et exécutez-le sur votre propre Firefox.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top