Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ZendFramework 1 и HTTPS запрос через прокси TSL1.2, Нужно получить корректный ответ 
:(
    Опции темы
ZVano
  Дата 5.5.2016, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: нет
Всего: 4



Доброго времени суток всем.
Есть один сайт https://auth.js.sign.eu.iit.com.ua, который обрывает соединение при попытке обратиться к нему через прокси средствами Zend_Http_Client. 
При этом :
  •  обращение через CURL и file_get_contents для сайта https://auth.js.sign.eu.iit.com.ua работает.
  •  обращение через Zend_Http_Client к другим сайтам работает (напр. https://ya.ru)

Пакетным сниффером Wireshark выявлено, что CURL и file_get_contents работают по протоколу TLS 1.2, а  Zend_Http_Client использует TLS 1.0
Помогите плс. загрузить страницу https://auth.js.sign.eu.iit.com.ua средствами Zend_Http_Client из ZendFramework 1 используя прокси-сервер

Вот проблемный кусок кода
Код

<?PHP
defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/'));

set_include_path('/media/diosrc/www/libs/ZendFramework-1.11.11/');

// Инклуд модуля с автозагрузчиком классов от ZendFramework .
require_once 'Zend/Loader/Autoloader.php';
// Инициализация автозагрузчика первым обращением. После этого он начинает работу.
$autoloader = Zend_Loader_Autoloader::getInstance();
$options = array(
    'adapter' => 'Zend_Http_Client_Adapter_Proxy',
    'proxy_host' => '10.10.10.228',
    'proxy_port' => 3128,
    'ssltransport' => 'tls',
    'ssl' => array(
        //'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT,
        'SNI_enabled' => true,
        'SNI_server_name' => 'auth.js.sign.eu.iit.com.ua'
    //'SNI_server_name' => $host
    )
);

// $url = 'https://ya.ru';
$url = 'https://auth.js.sign.eu.iit.com.ua';
$client = new Zend_Http_Client($url, $options);
$client->setMethod(Zend_Http_Client::GET);
$response = $client->request();
echo $response->getBody();
?>

Возвращает страницу с кодом 400
Код

Bad Request
Your browser sent a request that this server could not understand.

Wireshark:
Проходит рукопожатие, обмен сертификатами, получение тикета.
Спотыкается при передаче закриптованных данных:
Код

Secure Sockets Layer
>TLSv1 Record Layer: Encrypted Alert
>>Content Type: Alert (21)
>>Version: TLS 1.0 (0x0301)
>>Length: 32
>>Alert Message: Encrypted Alert



Вот работающий код с использованием функции file_get_contents
Код

<?PHP
//$url = 'http://ya.ru';
//$url = 'https://ya.ru';
$url = 'https://auth.js.sign.eu.iit.com.ua';

$host = parse_url($url, PHP_URL_HOST);

$aContext = array(
    'http' => array(
        'proxy' => 'tcp://10.10.10.228:3128',
    ),
    'ssl' => array(
        'SNI_enabled' => true,
        'SNI_server_name' => 'auth.js.sign.eu.iit.com.ua'
    )
);

$cxContext = stream_context_create($aContext);

$sFile = file_get_contents($url, false, $cxContext);
echo $sFile;
?>


Вот рабочий код с использованием CURL
Код

<?php
//$url = 'https://ya.ru';
// $url =  'https://yahoo.com';
$url = 'https://auth.js.sign.eu.iit.com.ua';
$proxy = '10.10.10.228:3128';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
{
    curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
    curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');
}
{// Отключаем проверки. Теперь доступ по HTTPS к сайтам с самоподписными сертификатами работает.
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
}
$text = curl_exec($ch);
echo "CURLINFO_HTTP_CODE=", curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (!$text) {
    // echo 'FAIL!';
    echo "\n";
    trigger_error(curl_error($ch));
}
echo $text;
curl_close($ch);
?>




Это сообщение отредактировал(а) ZVano - 5.5.2016, 14:07


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
_zorn_
Дата 6.5.2016, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Для начала - ИНСТРУМЕНТЫ нужны для того чтобы ПОМАГАТЬ работать.
ZF1 какбе старье само по себе.

Не понимаю почему вы так к нему привязались. 
Если просто есть проект с ним - наследуйтесь, переделывайте нужные методы и т.п.
А если есть доступ к коду коннекта, то просто выкинте его, напишите на curl и все.

ЗЫ. В первую очередь нужно решать ЗАДАЧУ. Красивость кода нужна только для себя и если не один будешь в нем потом ковыряться.
Сильно конечно не нужно этому совету следовать (мало ли потом Ваш код ко мне попадет  smile ), но общая мысль - не нужно сильно зацикливаться на инструментах.
Симфония кстати баще  smile 

Это сообщение отредактировал(а) _zorn_ - 6.5.2016, 03:06
PM MAIL   Вверх
ZVano
Дата 6.5.2016, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: нет
Всего: 4



Цитата(_zorn_ @  6.5.2016,  02:53 Найти цитируемый пост)
ZF1 какбе старье само по себе.

Цитата(_zorn_ @  6.5.2016,  02:53 Найти цитируемый пост)
Если просто есть проект с ним - наследуйтесь, переделывайте нужные методы и т.п.

Проект на ZF1. Чтобы переделать его нужно разобраться в ZF2 и подогнать тонну кода ядра - босс врядли выделит на это ресурс. 
Цитата(_zorn_ @  6.5.2016,  02:53 Найти цитируемый пост)
А если есть доступ к коду коннекта, то просто выкинте его, напишите на curl и все.

Пошел компромисс - переписал на CURL кусок кода для ИИТ (https://auth.js.sign.eu.iit.com.ua).
Вопрос о решении задачи на ZF1 остается в силе.


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.1148 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.