2017-07-20 1 views
1

Nous utilisons composer pour mettre à jour les dépendances avec Satis. Après une récente mise à niveau du serveur, nous n'avons pas été en mesure de le faire. Nous avons découvert que la fonction php file_get_contents échoue en essayant d'établir une connexion ssl.file_get_contents: Impossible de définir le fichier local de la chaîne de certificats

Nous utilisons le script suivant pour tester notre ssl:

<?php 
$url = 'https://satis.work.com/packages.json'; 
$contextOptions = [ 
    'ssl' => [ 
     'verify_peer'  => false, 
     'verify_peer_name' => false, 
     'local_cert'  => '/home/work/.ssl/deployer.pem', 
    ] 
]; 
$sslContext = stream_context_create($contextOptions); 
$result = file_get_contents($url, false, $sslContext); 
echo $result, "\n"; 

Ceci est jeté:

PHP Warning: file_get_contents(): Impossible de définir le fichier de la chaîne cert locale `/ home /work/.ssl/deployer.pem '; Vérifiez que vos paramètres cafile/capath incluent les détails de votre certificat et son émetteur dans /home/omlook/test-ssl.php sur la ligne 12 PHP Avertissement: file_get_contents(): Impossible d'activer le cryptage dans/home/work/test-ssl .php en ligne 12 PHP Warning: file_get_contents (https://satis.work.com/packages.json): failed to open stream: opération a échoué dans /home/work/test-ssl.php sur la ligne 12

Il est certainement pas un problème avec les droits ou la propriété du fichier, le script peut lire .pem très bien. Ce qui est déconcertant à ce sujet, est comment le exact même script et la clé .pem fonctionnent très bien dans mon environnement local, et les différences de version ne sont pas si importantes, il semble.

environnement local:

PHP 7.0.18-0ubuntu0.16.04.1 (cli) (NTS) Copyright (c) 1997-2017 Le groupe PHP Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies avec Zend OPcache v7.0.18-0ubuntu0.16.04.1, Copyright (c) 1999-2017, par Zend Technologies

OpenSSL 1.0.2g 1 Mar 2016

serveur:

PHP 7.1.7-1 + + ubuntu14.04.1 deb.sury.org + 1 (cli) (construit: 7 juillet 2017 10:07:42) (RNT) droit d'auteur (c) 1997-2017 Le groupe PHP Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies avec Zend OPcache v7.1.7-1 + ubuntu14.04.1 + deb.sury.org + 1, Copyright (c) 1999-2017, par Zend Technologies

1.1.0f OpenSSL 25 mai 2017

+0

Avez-vous essayé de vérifier votre certificat? devrait être quelque chose comme ceci "openssl verify -verbose /home/work/.ssl/deployer.pem" –

+0

Vérifiez fonctionne très bien: COMMAND (openssl vérifier -verbose -CAfile /home/work/.ssl/ca.pem/home /work/.ssl/deployer.pem) RÉSULTATS DANS (/home/work/.ssl/deployer.pem: OK) – Anton

Répondre

0

Cela semble se produire que si vous quittez le texte en clair-métadonnées (émetteur, validité, etc.) avant la « BEGIN CERTIFICAT "partie dans le fichier PEM. Pour les nouvelles versions de PHP (y compris 7.0), cette partie semble être obligatoire maintenant. Je n'ai pas encore découvert plus, mais je pense que c'est plutôt une question ouverte. Renouveler le certificat, y compris la partie de métadonnées générée par openssl, a résolu le problème pour moi.