REST API SSL и причуды работы.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
netscorpion
Сообщения: 35
Зарегистрирован: 2015.06.09, 16:11

REST API SSL и причуды работы.

Сообщение netscorpion »

Добрый день коллеги, возник вопрос по работе с REST API, точнее даже не вопрос а непонятная фигня.
И так, есть API для получения данных, написан контроллер для работы с ним.
В консольном режиме все работает как часы, запросы формируются ответы получаются короче все просто и красиво.

пример обращения к контроллеру из консоли

Код: Выделить всё

    public function actionTestApi()
    {
        $apiInterface = new  ApiInterfaceController($this,__METHOD__ );
        print_r($apiInterface->getClients());
    }
Но такая-же контрукция вызова для формирования ArrayDataProvider и вывода данных в Grid вызывает ошибку
2 и 3 вызов пропустил дабы не нагромождать.
Exception
HTTP Client Exception – yii\httpclient\Exception
fopen(): SSL operation failed with code 1. OpenSSL Error messages:
error:1408F119:SSL routines:func(143):reason(281)

Caused by: yii\base\ErrorException
fopen(): SSL operation failed with code 1. OpenSSL Error messages:
error:1408F119:SSL routines:func(143):reason(281)

------------------------------
1. in /var/www/html/lk/vendor/yiisoft/yii2-httpclient/StreamTransport.php at line 68
try {
$context = stream_context_create($contextOptions);
$stream = fopen($url, 'rb', false, $context);
$responseContent = stream_get_contents($stream);
// see http://php.net/manual/en/reserved.varia ... header.php
$responseHeaders = $http_response_header;
fclose($stream);
} catch (\Exception $e) {
Yii::endProfile($token, __METHOD__);
throw new Exception($e->getMessage(), $e->getCode(), $


4. in /var/www/html/lk/common/modules/E100/controllers/ApiInterfaceController.php at line 309 – yii\httpclient\Request::send()
private function getToken()
{
$Request = $this->client->post('token',[
'UserName' => self::USERNAME,
'Password' => self::PASSWORD,
'Grant_type' => 'password'
])->send();

if ($response->isOk) {


Если честно я просто в недоумении и не понимаю что не так.
Сам запрос который формирует ApiInterfaceController выглядит следующим образом

Код: Выделить всё

    public function init()
    {
        $this->client = new Client(['baseUrl' => self::URL]);
        parent::init(); // TODO: Change the autogenerated stub
    }
    
 private function getToken()
    {
        $Request = $this->client->post('token',[
            'UserName' => self::USERNAME,
            'Password' => self::PASSWORD,
            'Grant_type' => 'password'
        ])->send();

        if ($response->isOk) {
        ...........
        }
     }
Еще раз уточняю что в консоли все работает на 100% проблема возникает именно при вызове контролера из MVC
Подскажите может кто сталкивался с подобным.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: REST API SSL и причуды работы.

Сообщение vitalik1183 »

Код: Выделить всё

'sslVerifyPeer' => false
Yii2!
netscorpion
Сообщения: 35
Зарегистрирован: 2015.06.09, 16:11

Re: REST API SSL и причуды работы.

Сообщение netscorpion »

В таком построении запроса

Код: Выделить всё

        $response = $this->client->createRequest()
            ->setMethod('POST')
            ->setUrl('token')
            ->setData([
                'UserName' => self::USERNAME,
                'Password' => self::PASSWORD,
                'Grant_type' => 'password'])
            ->setOptions([
                'sslVerifyPeer' => false])
            ->send();
Без проверки сертификата удалённого узла ситуация аналогичная, в консоли работает про выборке для грида нет.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: REST API SSL и причуды работы.

Сообщение vitalik1183 »

А если через curl сделать запрос? Или вообще через браузер? Там тоже есть ошибка?
Yii2!
netscorpion
Сообщения: 35
Зарегистрирован: 2015.06.09, 16:11

Re: REST API SSL и причуды работы.

Сообщение netscorpion »

Ситуация именно странная так как если обращатся через консольную команду
./yii test-api/test-api
где test-api
ни что иное как

Код: Выделить всё

    public function actionTestApi()
    {
        $apiInterface = new  ApiInterfaceController($this,__METHOD__ );
        print_r($apiInterface->getClients());
    }
Все работает данные получаем и радуемся.

Также все запросы через Postman (приложение) также обрабатываются.

Именно если я вызываю свой контроллер для работы с RestAPI из контроллера визуальной формы тогда возникает ошибка.
При этом инициализация контроллера во всех случаях идентичная.
От куда этот бред взялся я не понимаю.
netscorpion
Сообщения: 35
Зарегистрирован: 2015.06.09, 16:11

Re: REST API SSL и причуды работы.

Сообщение netscorpion »

Итак продолжение темы
vitalik1183 писал(а): 2018.05.22, 12:49 А если через curl сделать запрос? Или вообще через браузер? Там тоже есть ошибка?
Я свормировал данный запрос
следующим образом

Код: Выделить всё

 $curl = new curl\Curl();

        $params = [
            'UserName' => 'adm',
            'Password' => '*******',
            'Grant_type' =>'password'
        ];
        $response = $curl->setPostParams($params)
            ->setHeaders([
                'Content-Type' => 'application/x-www-form-urlencoded',])
            ->post('https://lk.local:48000/token', true);
И конечно при работе с консоли получил прекрасный ответ какой и должен быть

Но при формировании такого-же запроса из контроллера формы я получаю

Код: Выделить всё

errorCode: 35
errorText: SSL connect error
Ну или если вдаваться в подробности
CURLE_SSL_CONNECT_ERROR (35)

A problem occurred somewhere in the SSL/TLS handshake. You really want the error buffer and read the message there as it pinpoints the problem slightly more. Could be certificates (file formats, paths, permissions), passwords, and others.
Ребята у кого есть какие мысли по этому поводу !?!?!?

P.S. В плане бреда пробовал использовать разные контроллеры

Код: Выделить всё

use yii\web\Controller;
use yii\console\Controller;
Эффект одинаковый в визуальной форме не работает. :shock:
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: REST API SSL и причуды работы.

Сообщение vitalik1183 »

Так, попробуйте для начала проверить корректно ли установлен у Вас сертификат!
Yii2!
netscorpion
Сообщения: 35
Зарегистрирован: 2015.06.09, 16:11

Re: REST API SSL и причуды работы.

Сообщение netscorpion »

vitalik1183 писал(а): 2018.05.24, 07:48 Так, попробуйте для начала проверить корректно ли установлен у Вас сертификат!
С сертификатом все в порядке он установлен корректно и подписан https://letsencrypt.org/. Так что в этом плане все отлично.

Я обратился к разработчикам на github.com с данным вопросом и оказывается данная проблема уже известна и как ни странно это проблема исключительно совместимости версий PHP и OpenSsl.

Короче по телу как говорится, я обновил систему и вуаля проблема рассосалась как будто и не было. :D
Закрыто