Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

获取https内容报错 #1

Closed
xiaojianbj opened this issue Oct 29, 2019 · 5 comments
Closed

获取https内容报错 #1

xiaojianbj opened this issue Oct 29, 2019 · 5 comments

Comments

@xiaojianbj
Copy link

是不是还不支持https,报错的内容如下:
SSL handshake error: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
Exception: Connection closed in /home/bdata/local/BData-service/vendor/workerman/http-client/src/Request.php:487
Stack trace:
#0 /home/bdata/local/BData-service/vendor/workerman/workerman/Connection/TcpConnection.php(949): Workerman\Http\Request->onUnexpectClose(Object(Workerman\Connection\AsyncTcpConnection))
#1 /home/bdata/local/BData-service/vendor/workerman/workerman/Connection/TcpConnection.php(776): Workerman\Connection\TcpConnection->destroy()
#2 /home/bdata/local/BData-service/vendor/workerman/workerman/Connection/TcpConnection.php(581): Workerman\Connection\TcpConnection->doSslHandshake(Resource id #31)
#3 /home/bdata/local/BData-service/vendor/workerman/workerman/Events/Select.php(294): Workerman\Connection\TcpConnection->baseRead(Resource id #31)
#4 /home/bdata/local/BData-service/vendor/workerman/workerman/Worker.php(2382): Workerman\Events\Select->loop()
#5 /home/bdata/local/BData-service/vendor/workerman/workerman/Worker.php(1490): Workerman\Worker->run()
#6 /home/bdata/local/BData-service/vendor/workerman/workerman/Worker.php(1320): Workerman\Worker::forkOneWorkerForLinux(Object(Workerman\Worker))
#7 /home/bdata/local/BData-service/vendor/workerman/workerman/Worker.php(1294): Workerman\Worker::forkWorkersForLinux()
#8 /home/bdata/local/BData-service/vendor/workerman/workerman/Worker.php(509): Workerman\Worker::forkWorkers()
#9 /home/bdata/local/BData-service/httpclient.php(40): Workerman\Worker::runAll()
#10 {main}SSL handshake error: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:

@walkor
Copy link
Owner

walkor commented Oct 29, 2019

支持https
看起来像是证书验证失败。

测试下百度或者其它网站https是否有问题。

@xiaojianbj
Copy link
Author

@xiaojianbj
Copy link
Author

查了一下问题,在ConnectionPool.php的create方法中增加ssl参数的设置就行了,如下:
/**
* Create a connection.
*
* @param $address
* @param bool $ssl
* @return AsyncTcpConnection
*/
protected function create($address, $ssl = false)
{
$context = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$connection = new AsyncTcpConnection($address, $context);

@walkor
Copy link
Owner

walkor commented Oct 29, 2019

我又测试了下,没问题。
从报错看是你的系统里的证书是ssl v3版本,ssl v3有严重的漏洞,所以在workerman代码里禁用了ssl v3.
如果证书有问题,curl应该也用不了,你可以测试下。用命令行测试 php test.php

@itldg
Copy link

itldg commented Mar 24, 2022

查了一下问题,在ConnectionPool.php的create方法中增加ssl参数的设置就行了,如下: /** * Create a connection. * * @param $address * @param bool $ssl * @return AsyncTcpConnection */ protected function create($address, $ssl = false) { $context = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); $connection = new AsyncTcpConnection($address, $context);

按照你的方法成功了,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants