Erlauben, selbst-signierte Zertifikate für die HTTPS-wrapper
Im Grunde genommen habe ich dieses:
function request($url) {
return file_get_contents($url, false, stream_context_create(array(
"ssl" => array(
"verify_peer" => true,
"allow_self_signed" => false,
)
)));
}
request("https://[A]");
request("https://[B]");
Wobei [A] ist die URL auf einem server mit einem "echten" Zertifikat und [B] etwas ist auf einmal nur ein selbst-signiertes Zertifikat.
Mit [A] es funktioniert gut, mit [B] bekomme ich diese:
file_get_contents(): Failed to enable crypto
Das ist eine ziemlich unglückliche Fehlermeldung, sollte etwas gewesen sein wie "server certificate verification failed", aber gut...
Nun dachte ich: "ok, [B] ist mein test-system - i don 'T care für das Zertifikat" und verändert den Kontext, in diesem:
"verify_peer" => false,
"allow_self_signed" => true,
Es sollte akzeptieren nun alle server-Zertifikat, auch mein selbst unterschrieben ein. Aber es ist immer noch das gleiche Verhalten - [A] funktioniert, [B] jedoch nicht. Warum?
Btw: ich weiß, dass es funktioniert gut mit der curl-Erweiterung, aber ich möchte zu besiegen, ohne es.
- Bitte definieren Sie "Mit [A] es funktioniert gut," ... weil keiner von denen sollte jemals arbeiten. Sie haben nicht angegeben
"cafile"
oder"capath"
um PHP mitzuteilen, was CA-CERT für peer-überprüfung, und Sie haben versagt selbst-signierte Zertifikate. Weder [A] noch [B] könnte jemals erfolgreich eine Verbindung herstellen, wenn Sie tatsächlich mit den genauen code hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktioniert für mich. Viel Glück.
'verify_peer_name' => false
um self-signed-cert zu arbeitenverify_peer
solltefalse
, wenn Sie einen SSL-MITM-proxy.