Bonjour,
J'ai un mutu perso2014, non migré en https.
Sur un script php, je fais un file_get_contents vers une url https (avec un context GET), et j'ai une erreur:
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /home/
Comment faire pour que çà fonctionne ? Ce script tourne très bien sur easyphp après avoir activé:
extension=php_openssl.dll
allow_url_fopen = On
Merci,
File_get_contents https SSL operation failed
Sujets apparentés
- Serveur non sécurisé, celui-ci ne supporte pas FTP sur TLS
63878
03.09.2018 14:46
- Connexion à mon compte client
57900
13.02.2019 09:51
- reCAPTCHA erreur pour le propriétaire du site : clé de site non valide
49919
14.02.2019 16:17
- [FAQ] Comment mettre à jour mon site pour supporter Apache 2.4 ?
34324
28.07.2017 11:39
- Ce site est inaccessible Impossible de trouver l'adresse DNS du serveur
29782
16.10.2016 16:24
- Augmenter taille PHP Post Max Size sur mutualisé ?
28193
04.12.2019 21:52
- The requested URL / was not found on this server
27835
02.03.2017 18:25
- NextCloud sur mutualisé
27176
07.04.2017 08:42
- Deploy d'un projet Node JS
27066
12.10.2016 20:18
- Passage en php 7.4
24838
30.06.2020 05:05
Bonjour,
Le file gets contents est vers une url à toi ou à quelqu'un d'autre ?
As tu essayé l'environnement d'exécution stable ?
Car l'ancien environnement n'est pas à jour et certains sites qui ne supportent que les protocoles à jour donc si tu fais une requête depuis l'ancien environnement ça ne passe pas.
Merci,
l'url est vers un domaine externe
mon ovhconfig:
app.engine=phpcgi
app.engine.version=5.6
http.firewall=none
environment=production
Il faut donc bien passer en environnement stable https://docs.ovh.com/fr/fr/web/hosting/modifier-lenvironnement-dexecution-de-mon-hebergement-web/#comment-modifier-l-environnement-d-execution
Mille merci Buddy, it works !!!
:kissing:
```text Bonjour à tous,
Je remonte ce vieux sujet mais j'ai exactement le même problème. Cependant la solution proposée (passer l'environnement PHP en stable) ne résout pas le problème chez moi.
Pour résumer :
Lorsque j'utilise `file_get_contents` pour accéder à une ressource externe, j'obtiens une erreur avec certains site :
> file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
En configurant la requête sans vérification des paires comme ci-dessous, ça fonctionne mais c'est une https://stackoverflow.com/questions/26148701/file-get-contents-ssl-operation-failed-with-code-1-failed-to-enable-crypto?noredirect=1&lq=1 faille de sécurité.
$options = https://filerun.com/
"ssl" => [
"verify_peer"=>false,
"verify_peer_name"=>false
]
];
$file = file_get_contents("https://www.velib-metropole.fr/assets/static_files/images/ico_velo_elec_full.png", false, stream_context_create($options));
Ma configuration :
* OVH Mutualisé
* PHP 7.3, stable, moteur PHP, mode dév
* SSL Let's Encrypt
* Site configuré via .htaccess pour être toujours en HTTPS
**Quelqu'un a t il déjà rencontré ce problème ?** Je n'ai le problème que depuis ce matin ... Hier, j'ai passé le site en PHP 7.3 (précédemment 7.0) pour installer [FileRun dessus, c'est tout. Repasser en PHP 7.0 ne règle pas le problème. ```
```text > SSL routines:SSL3_GET_SERVER_CERTIFICATE
> Warning: file_get_contents(): Failed to enable crypto in /home/...
il semble que ssl3 pose souci avec fopen: https://stackoverflow.com/a/14078318
mais ssl3 devrait ne plus être utilisé
https://www.octopuce.fr/nouvelle-faille-de-securite-la-fin-de-sslv3-est-annoncee/
et TLS1.2 est possible
```text
nmap --script ssl-enum-ciphers -p 443 www.velib-metropole.fr | grep -i tlsv
| TLSv1.0:
| TLSv1.1:
| TLSv1.2:
``` ```
Merci pour ta réponse !
Pour tester, j'ai fait le code suivant en utilisant CURL avec un « User Agent » pour mettre de côté l'hypothèse que le site de Vélib (notre exemple) bloque les requêtes `file_get_contents()`. Je configure bien la requête pour qu'elle emploie TLS 1.2.
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
$data = curl_exec($ch);
echo 'Erreur Curl : ' . curl_error($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data('https://www.1metropole.fr/assets/static_files/images/ico_velo_elec_full.png'metropole.fr/assets/static_files/images/ico_velo_elec_full.png');
echo $returned_content;
J’obtiens l'erreur suivante :
> SSL certificate problem: unable to get local issuer certificate
**Cela indiquerait que PHP n'arrive pas à trouver le bon certificat sur mon serveur ?** Est-ce qu'OVH n'aurait pas les certificats à jour ?
J'ai essayé de charger des certificats (http://curl.haxx.se/ca/cacert.pem) manuellement, via ces options. Pour rappel je suis en mutualisé :
$certificate = __DIR__ . "/cacert.pem";
curl_setopt($ch, CURLOPT_CAINFO, $certificate);
curl_setopt($ch, CURLOPT_CAPATH, $certificate);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
Ca n'a pas d'effet ...
Une idée ? Le code fonctionne très bien (avec ou sans les certificats téléchargés) si je pointe vers Google.com, par exemple.
```text cet erreur ssl3, je l'ai testée aussi, ailleurs
sur mon pc, à jour debian 10:
```text
curl -sS -O https://www.velib-metropole.fr/assets/static_files/images/ico_velo_elec_full.png
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
```
ce n'est pas ton serveur en cause ```
Donc si je te comprends bien, le problème vient de leur côté et on a pas trop de solution. Merci pour tes réponses en tout cas !
je le pense, mais c'est la première fois que je suis confronté à ça
Pour info, la connexion SSL fonctionne à nouveau parfaitement vers le site Vélib depuis une heure. Probablement un bug temporaire de leur côté. Ca m'apprendra à vouloir régler les problèmes, ils se résolvent tous seuls maintenant on dirait ...