2017-01-20 2 views
0

Je dois ouvrir des ressources distantes qui sont signées par l'autorité de certification d'une société privée. À l'heure actuelle, PHP n'ouvre pas les ressources car il ne fait pas confiance au signataire du certificat. Je sais que vous pouvez faire des certificats avec l'objet de contexte de flux, mais je cherche un moyen de donner à PHP la clé publique d'une nouvelle autorité de certification et les méthodes file() et les méthodes similaires font confiance aux certificats à distance signés par cette autorité sans avoir à créer un contexte de flux chaque fois.Comment ajouter une autorité de certification à PHP afin que la fonction file() approuve les certificats signés par elle?

Existe-t-il un moyen d'ajouter une nouvelle autorité de certification à php.ini? J'ai essayé d'ajouter la clé publique de l'AC à /etc/ssl/certs/, mais cela ne semble pas être reconnu.

Répondre

0

Curl utilise un fichier unique contenant toutes les autorités de certification. Pour ajouter une nouvelle CA à Curl/PHP, vous devez obtenir un bundle complet, ajouter votre CERT au bundle, puis dire à PHP d'utiliser le bundle personnalisé.

  1. Téléchargez le dernier paquet de CURL et enregistrez-le /etc/ssl/certs/cacert.pem:

curl --remote-name --time-cond cacert.pem https://curl.haxx.se/ca/cacert.pem

  1. Modifier le fichier /etc/ssl/certs/cacert.pem et ajoutez votre nouveau CA public clé vers le bas.

  2. Modifiez php.ini et ajoutez la ligne openssl.cafile=/etc/ssl/certs/cacert.pem en haut (ou en bas).

  3. Redémarrez le serveur Web.