Ошибка Amphp Artax

я использовал следующий очень простой пример amphp/artax

$URL может быть любым URL-адресом, например. http://www.yahoo.com

$promises[$URI] = Amp\call(function () use ($client, $URI) {
                // "yield" inside a coroutine awaits the resolution of the promise
                // returned from Client::request(). The generator is then continued.
                $response = yield $client->request($URI);

                // Same for the body here. Yielding an Amp\ByteStream\Message
                // buffers the entire message.
                $body = yield $response->getStatus();

                return $body;
            });

        $responses = Amp\Promise\wait(Amp\Promise\all($promises));

и получаю следующую ошибку

    Fatal error: Uncaught Amp\Socket\CryptoException: Crypto negotiation failed: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:1414D172:SSL routines:tls12_check_peer_sigalg:wrong signature type in /var/www/html/vendor/amphp/socket/src/Internal/functions.php:118
Stack trace:
#0 /var/www/html/vendor/amphp/amp/lib/Loop/NativeDriver.php(172): Amp\Socket\Internal\{closure}('am', Resource id #293, Object(Amp\Deferred))
#1 /var/www/html/vendor/amphp/amp/lib/Loop/NativeDriver.php(68): Amp\Loop\NativeDriver->selectStreams(Array, Array, 4.782)
#2 /var/www/html/vendor/amphp/amp/lib/Loop/Driver.php(130): Amp\Loop\NativeDriver->dispatch(true)
#3 /var/www/html/vendor/amphp/amp/lib/Loop/Driver.php(70): Amp\Loop\Driver->tick()
#4 /var/www/html/vendor/amphp/amp/lib/Loop.php(76): Amp\Loop\Driver->run()
#5 /var/www/html/vendor/amphp/amp/lib/functions.php(158): Amp\Loop::run(Object(Closure))
#6 /var/www/html/parseradvance.php(77): Amp\Promise\wait(Object(Amp\Internal\PrivatePromise))
#7 {main}
  t in /var/www/html/vendor/amphp/socket/src/Internal/functions.php on line 118

может ли кто-нибудь помочь мне решить проблему, которую я уже установил cainfo=curl.pem

заранее спасибо


person waleed    schedule 05.09.2018    source источник


Ответы (2)


Это вызвано тем, что на сервере настроены слабые шифры, которые Artax по умолчанию отклоняет. Более слабые шифры можно разрешить, передав пользовательский экземпляр ClientTlsContext клиенту при создании и настройке withSecurityLevel(1), по умолчанию 2. См. также https://github.com/ampphp/artax/issues/174.

person kelunik    schedule 14.09.2018

Возможно, это происходит из-за того, что вы используете http: вместо https:.

person Nicolas400    schedule 03.05.2019