Comment conserver mon cacert.pem actuel pour des raisons de sécurité lors de l'utilisation de curl?
Je tiens à garder mes certificats racine de courant pour une utilisation avec cURL et PHP interne curl
de commande, cependant il n'y a pas de paramètre actuellement pour télécharger le fichier en cours il a besoin pour une bonne connexion sécurisée et à les tenir à jour.
Et un exemple d'utilisation curl
en PHP pour une connexion sécurisée qui nécessite un fichier nommé cacert.pem
(PEM codée de la chaîne de certification pour la validation des connexions à distance) est comme suit :
$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 tout simplement mis CURLOPT_SSL_VERIFYPEER
à faux, et donc d'ignorer le problème, ce qui est mauvais . Vous pouvez voir ici où une autorité de certification montre que si vous n'avez pas ce fichier actuel, la seule façon de se connecter à un serveur sécurisé est de désactiver la vérification des certificats et des autres met en garde contre les implications derrière la désactivation de la vérification par les pairs.
Ce que je demande est pour une façon 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é .
Ce n'est pas une demande pour une ressource externe ou hors site, lien, etc, toutefois, en raison de la nature du problème, il est probable que peut être la SEULE façon de résoudre ce problème, car cela nécessiterait la mise à jour continue comme les chaînes de certificats révoqués. À ce jour, il n'existe aucun moyen d'obtenir ce fichier soit dans le cadre de la distribution de roulage lui-même, ou php, ou la bibliothèque curl de php et de continuer à le maintenir. Alors qu'il est décourageant de voir que ce n'est pas quelque chose qui d'une simple commande de mise à jour comme curl --update-root-ca
serait bien, il n'existe pas de forme.
source d'informationauteur Kraang Prime
Vous devez vous connecter pour publier un commentaire.
Car d'abord l'écriture de cet article, (et donc cette réécriture), j'ai pu résoudre mon problème en incluant des liens directement à la seulement source légitime de maintenir ce fichier qui est fournie sur le site maintenu par l'auteur de
curl
à cet emplacementPlus loin que la technologie progresse, cette question a été mis à jour pour montrer comment l'utiliser
curl
en PHP et la force TLS v1.2 connexion (quelque chose dont certains fournisseurs d'opérations exigent ou recommandent et ne peut pas fournir des renseignements sur la façon de le faire).Qui concerne les autorités de certification, il y a un peu de la clé racine des autorités telles que :
Ainsi que d'autres autorités, par leur nature, tels que
Qui peut être une image pour ceux qui cherchent à maintenir leur propre cacert.pem. Gardez à l'esprit que vous aurez besoin de télécharger leurs listes de révocation de certificats qui ont été violées ou expiré) à partir de la liste de révocation de certificats est de maintenir la confiance mécanisme, tandis que vous devriez être en mesure de s'en tirer avec juste de le télécharger leur certificat racine de chaînes et l'utilisation de ces locaux faisant autorité fichier en tant que votre cacert.pem.
cacert.pem
est utilisé parcurl
. Il n'y a pas d'autorité ultime sur lequel les certificats sont dignes de confiance, mais les listes utilisées par les navigateurs web sont une bonne source. Ces listes sont constamment mis à jour suite à CA et de modifications de pratiques en matière de sécurité.Les auteurs de
curl
maintenir un outil qui permet d'extraire uncacert.pem
à partir de Firefox, et après une assez up-to-date de sortie sur leur site:curl