Ich verwende PHP 5.2.6 unter Windows, ich habe extension=php_curl.dll
und extension=php_openssl.dll
unkommentiert in php.ini;Wie bekomme ich SSL in fsockopen?
curl
cURL support enabled
cURL Information libcurl/7.16.0 OpenSSL/0.9.8g zlib/1.2.3
openssl
OpenSSL support enabled
OpenSSL Version OpenSSL 0.9.8g 19 Oct 2007
Ich bin nicht sicher, dass cURL wird an diesen wichtige Option aktiviert ist, aber da es OpenSSL erwähnt dachte ich, dass ich es hier sowieso auf Vollständigkeit gehören würde: als solche kann ich folgende in phpinfo
sehen.
Was ich tun möchte, ist einfach: eine POST-Anforderung mit fsockopen
auf einem anderen Server über SSL machen.
Mein Code so weit ist dies:
$host = 'www.redacted.com';
$data = 'user=redacted&pass=redacted&action=redacted';
$response = "";
if ($fp = fsockopen("ssl:{$host}", 443, $errno, $errstr, 30)) {
$msg = 'POST /wsAPI.php HTTP/1.1' . "\r\n";
$msg .= 'Content-Type: application/x-www-form-urlencoded' . "\r\n";
$msg .= 'Content-Length: ' . strlen($data) . "\r\n";
$msg .= 'Host: ' . $host . "\r\n";
$msg .= 'Connection: close' . "\r\n\r\n";
$msg .= $data;
if (fwrite($fp, $msg)) {
while (!feof($fp)) {
$response .= fgets($fp, 1024);
}
}
fclose($fp);
} else {
$response = false;
}
Das funktioniert natürlich gut, wenn ich in $host
und verwenden nur passieren Port 80. Aber ich brauche wirklich diese über SSL zu schicken, und es ist jetzt nicht funktioniert. $response
wird auf false
gesetzt, $errno
bleibt auf 0
, und $errstr
wird auf php_network_getaddresses: getaddrinfo failed: No such host is known.
gesetzt. Ich weiß, dass es kein Problem mit dem Ausfall des Servers oder einem Tippfehler im Hostnamen usw. ist, weil es funktioniert, wenn ich über Port 80 ungesichert gehe. Die Probleme beginnen erst, wenn ich versuche, zu SSL zu wechseln.
Was kann ich tun, damit das funktioniert?
Nicht wirklich mit der Antwort verbunden, aber haben Sie in Betracht gezogen, stattdessen das TLS-Protokoll zu verwenden? TLSv1 ist im Wesentlichen die vierte Version von SSL und hat diese als de facto SSL-Implementierung weitgehend abgelöst. – Powerlord