Windows에서 PHP 5.2.6을 실행 중이므로 extension=php_curl.dll
과 extension=php_openssl.dll
이 주석 처리되지 않았습니다. 같은 나는 phpinfo
에서 다음을 볼 수 있습니다fsockopen에서 SSL을 작동 시키려면 어떻게합니까?
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
나는 컬을 가진 것은이에 매우 중요 가능하지만, OpenSSL을 언급 한 이후 나는 완벽 어쨌든 여기에 포함 거라고 생각 모르겠어요.
는 내가하고 싶은 간단하다 : fsockopen
를 사용하여 SSL을 통해 다른 서버로 POST 요청을합니다.
내 코드는 지금까지 있습니다 :
$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;
}
난 그냥 $host
에 전달하고 포트 80을 사용하지만 난 정말 SSL을 통해이를 보낼 필요가 있고, 지금은 작동하지 않는 경우 물론 잘 작동합니다. $response
은 false
, $errno
은 0
에 있으며 $errstr
은 php_network_getaddresses: getaddrinfo failed: No such host is known.
으로 설정됩니다. 나는 그것이 포트 80을 안전하지 않게 통과한다면 작동하지 않기 때문에 서버가 다운되거나 호스트 이름에 오타가 발생하지 않는다는 것을 안다. 문제는 SSL로 전환하려고 할 때만 시작됩니다.
이 기능을 사용하려면 어떻게해야합니까?
정말 답과 관련이 없지만 대신 tls 프로토콜을 사용 해본 적이 있습니까? TLSv1은 본질적으로 SSL의 네 번째 버전이며 사실상 SSL 구현으로 널리 대체되었습니다. – Powerlord