2016-07-21 13 views
0

ich einen Code haben, wenn eine Website SSL-Zertifikat überprüft haben, wie Sie unten sehen können:php-Buchsen keine Verbindung herstellen // ssl: 443

$url = "stackoverflow.com"; 
$orignal_parse = parse_url($url, PHP_URL_HOST); 
$get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE))); 
$read = stream_socket_client("ssl://".$orignal_parse.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get); 
$cert = stream_context_get_params($read); 
$certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']); 
var_dump($certinfo); 

Wenn ich eine URL einfügen, die HTTPS enthält, diesen Code Rückkehr zu mir alle Informationen über das Zertifikat, aber wenn ich eine uRL einfügen, die nicht HTTPS enthalten ich die folgende Fehlermeldung:

Warning: stream_socket_client(): Unable to connect to ssl: //: 443 (No connection could be made because the target machine actively refused it.) In

Wie ich dieses Problem lösen kann?

+1

Dieser Fehler zeigt an, dass der Remote-Server nicht abhört oder blockiert, wenn er mit Port 443 (SSL-Port) verbunden ist. Sie müssen diesen Fehler entsprechend behandeln, und wenn Sie darauf stoßen, wissen Sie, dass die Site SSL nicht unterstützt. – drew010

+0

Nun, in diesem Fall muss ich einen anderen Code haben, um die Antwort dieser Anfrage zu überprüfen, und wenn der Statuscode 200 ist, führe ich meinen Code aus, wenn nicht, führe ich diesen Code nicht aus und vermeide die Warnung ... – Lacrifilm

Antwort

1

Sie sollten den Rückgabewert von stream_socket_client() überprüfen und wenn es false zurückgibt, wird nicht weiter verfahren (weil die Ressource nicht gültig ist).

$url = "stackoverflow.com"; 
$orignal_parse = parse_url($url, PHP_URL_HOST); 
$get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE))); 
$read = stream_socket_client("ssl://".$orignal_parse.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get); 

if (!$read) { 
    // ssl connection failed for some reason 
    // could be a certificate error or failure to connect on port 443 
    echo "Failed to connect to site. Error {$errno}: {$errstr}\n"; 
} else { 
    $cert = stream_context_get_params($read); 
    $certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']); 
    var_dump($certinfo); 
} 
+0

Danke , Ihr Code funktioniert und jetzt ist mein Problem gelöst – Lacrifilm

Verwandte Themen