2015-09-28 2 views
3

Je voudrais obtenir le résultat de ma page dans https dans une variable php mais la fonction fopen renvoie false;Fopen accepte le certificat auto-signé

Je pense que cette erreur peut être produit par le certifacte ssl qui est auto-signé

fopen("https://192.168.1.1:8443", "rb")) 

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

Est-ce une configuration ssl php pour accepter tous les certificats?

Répondre

6

voir Error when loading external xml file with php via https : SSL3_GET_SERVER_CERTIFICATE

Exporter votre certificat auto-signé PEM codé et l'ajouter à ca-bundle.crt (ou s'il n'y a pas encore ca-bundle.crt, renommez votre fichier d'exportation)

Ensuite, utilisez

$context = stream_context_create(array('ssl'=>array(
    'verify_peer' => true, 
    'cafile' => '/path/to/ca-bundle.crt' 
))); 
$fd = fopen("https://192.168.1.1:8443", "rb", false, $context); 

voir SSL context options et stream_context_create

6

Cocher cette - http://php.net/manual/en/function.stream-context-create.php

<?php 
$opts=array(
    "ssl"=>array(
     "verify_peer"=>false, 
     "verify_peer_name"=>false, 
    ), 
); 

$response = fopen("https://192.168.1.1:8443", false, stream_context_create($opts)); 

echo $response; ?> 
+0

Il devrait être 'réponse $ = fopen ("https://192.168.1.1:8443", 'rb', false, stream_context_create (opts $));' Vous sautées 1 paramètre – Eugene