2016-04-07 1 views
3

Je cours PHP Version 5.6 dans le cadre de XAMPP dans MacOSx El Capitan et ayant des erreurs sur quelques sites https. par exemple: https://www.google.com/php SSL3_GET_SERVER_CERTIFICATE: vérification de certificat a échoué

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Mais aucune erreur SSL sont revenus sur ces sites:

  1. GitHub
  2. Composer
  3. PayPal TLS Test

S'il vous plaît trouver la liste d'abord ce que i » J'ai essayé jusqu'à présent, mais rien ne fonctionne.

Essayé Google premier:

  1. SSL error SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
  2. PHP - SSL certificate error: unable to get local issuer certificate
  3. HTTPS and SSL3_GET_SERVER_CERTIFICATE:certificate verify failed, CA is OK

Manuel

1. Mise à jour cert.pem fichier

php -r 'print_r(openssl_get_cert_locations());'

et le résultat était.

Array 
(
    [default_cert_file] => /Applications/XAMPP/xamppfiles/share/openssl/cert.pem 
    [default_cert_file_env] => SSL_CERT_FILE 
    [default_cert_dir] => /Applications/XAMPP/xamppfiles/share/openssl/certs 
    [default_cert_dir_env] => SSL_CERT_DIR 
    [default_private_dir] => /Applications/XAMPP/xamppfiles/share/openssl/private 
    [default_default_cert_area] => /Applications/XAMPP/xamppfiles/share/openssl 
    [ini_cafile] => /Applications/XAMPP/xamppfiles/share/openssl/cert.pem 
    [ini_capath] => 
) 

Enregistré dans /Applications/XAMPP/xamppfiles/share/openssl/cert.pem

Mise à jour php.ini avec la suite

openssl.cafile = /Applications/XAMPP/xamppfiles/share/openssl/cert.pem 
curl.cainfo = /Applications/XAMPP/xamppfiles/share/openssl/cert.pem 

Restarted Apache mais pas succès. J'ai essayé de lire le fichier pem (pas d'erreur renvoyée)

echo file_get_contents("/Applications/XAMPP/xamppfiles/share/openssl/cert.pem"); 

Test Case

Il fonctionne très bien sur github.comgetcomposer.orgpaypal.com mais pas sur google.com (google.com fonctionne aussi bien sur mon système Windows)

php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); var_dump(curl_exec($ch)); var_dump(curl_error($ch));' 

Résultat: PayPal_Connection_OKbool(true)

Mais google.com

php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.google.com/"); var_dump(curl_exec($ch)); var_dump(curl_error($ch));' 

Résultat: string(63) "SSL certificate problem: unable to get local issuer certificate"

P.S: La désactivation de la vérification par les pairs ne sera pas acceptable.

Répondre

0

Dans mon cas, m'assurer que le fichier cert.pem correct existe n'était pas suffisant. Vous devez également définir votre fuseau horaire dans votre fuseau horaire à l'aide de la touche date.timezone (dans mon cas, je l'ai défini sur America/Los Angeles). Sinon, PHP utilisera par défaut UTC et votre horloge système sera désactivée. Cela a résolu le problème pour moi sur Mac OS X El Capitan (10.11.2).

+0

J'ai essayé votre chemin mais je n'ai pas travaillé non plus. –