Установление при помощи PHP защищенного (HTTPS) соединенения

34249474kid

Новичок
Установление при помощи PHP защищенного (HTTPS) соединенения

Возникла такая проблема: необнодимо установить при помощи PHP защищенное (HTTPS) соединенение: имеется сервер(apache+ssl), и клиентский сертификат выданный этим сервером,
если его устанавливаешь в браузер, то всё работает, а как обратиться к этому серверу не через браузер а из скрипта php не знаю....
 

WP

^_^
Нужно чтоб php был с OpenSSL...чих.... ну и делай коннект к ssl://.... чих.
 

34249474kid

Новичок
хотелось бы небольшой пример, а то я где-то вычитал:
# working vars
$host = 'gusnet.lv';
$service_uri = '/pub/php/user.certificate.https/service_echo_post.php';
$local_cert_path = 'test-client.pem';
$local_cert_passphrase = 'TestPass';
$request_data = 'var1=value+of+var+1';

# array with the options to create stream context
$opts = Array();

# compose HTTP request header
$header = "Host: $host\r\n";
$header .= "User-Agent: PHP Script\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($request_data)."\r\n";
$header .= "Connection: close";

# define context options for HTTP request (use 'http' index, NOT 'httpS')
$opts['http']['method'] = 'POST';
$opts['http']['header'] = $header;
$opts['http']['content'] = $request_data;

# define context options for SSL transport
$opts['ssl']['local_cert'] = $local_cert_path;
$opts['ssl']['passphrase'] = $local_cert_passphrase;

# create stream context
$context = stream_context_create($opts);

# POST request and get response
$filename = 'https://'.$host.$service_uri;
$content = file($filename, false, $context);
$response_data = implode('', $content);

,но у меня вылетает ошибка в строке $content = file($filename, false, $context);
типа
Warning: file(https://localhost/espp/ver1/user/test.php) [function.file]: failed to open stream: Invalid argument in C:\www\ESPP\ver1\user\request.php on line 54

Warning: implode() [function.implode]: Bad arguments. in C:\www\ESPP\ver1\user\request.php on line 56
 

34249474kid

Новичок
https:// != ssl:// я это вполне понимаю это получается https = http + ssl тогда каким образом установить ssl соединение с помощью клиентского сертификата

-~{}~ 07.06.06 16:38:

всё что приведено выше заработало, но строка
$content = file($filename, false, $context);
выполняется почти 2 минуты!! куда рыть дальше
 

phprus

Moderator
Команда форума
Используй функцию [m]file_get_contents[/m], тебе судя по коду нужен файл в виде строки, а не в виде массива строк, а эта функция сразу возвращает файл в виде строки.
 

34249474kid

Новичок
мне нужно пердать туда значения и получить в замен другие!!

-~{}~ 08.06.06 10:25:

file_get_contents тоже отрабатывает за 2 мин, при этом оба запроса загружают Apache на 99%

-~{}~ 08.06.06 10:27:

может быть проверка сертификата идёт так долго???

-~{}~ 09.06.06 08:48:

всё ок, переставил apache
 
Сверху