我在这里可以看到如何为Zend_Http_Client设置套接字适配器
http://framework.zend.com/manual/1.12/en/zend.http.client.adapters.html
他们给出的例子是tls或sslv2。
有谁知道tls1.2的设置是什么?
我已经尝试了一些,但我只是在猜测。我得到的错误是:
Unable to find the socket transport "tls1.2" - did you forget to enable it when you configured PHP?'
如果我尝试自己,我会得到:
Unable to Connect to tls://www.sandbox.paypal.com:443
(对于其他人,谷歌搜索这是用PayPal修复我们的IPN验证,这会在我们的SSL连接上出现以下错误:
Error in cURL request: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
)
答案 0 :(得分:2)
你很亲密!将ssltransport
设为tlsv1.2
。
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Socket',
'ssltransport' => 'tlsv1.2'
);
$client = new Zend_Http_Client('https://www.sandbox.paypal.com', $config);
$response = $client->request();
echo $response->getStatus();
首先检查Zend_Http_Client_Adapter_Socket
用于发送HTTP请求的内容,结果是stream_socket_client()
。您可以在系统上运行stream_get_transports()
以查看可用套接字传输列表。
有关如何选择特定SSL / TLS版本的更多示例,请参阅 PHP 5.6.x中的OpenSSL更改迁移指南中的SSL/TLS version selection。
在Ubuntu 14.04 Trusty上使用PHP 5.6进行测试,它支持开箱即用的TLSv1.2。