Zend无法通过代理连接到HTTPS服务器

时间:2015-11-03 10:41:05

标签: php zend-framework proxy

我正在使用Zend Framework 1. *并且在执行时“stream_socket_enable_crypto”总是返回false。 Zend抛出异常这个异常:

"Unable to connect to HTTPS server through proxy could not negotiate secure connection." 

我在之前的方法“stream_socket_enable_crypto”中尝试了以下所有加密类型,结果相同......

STREAM_CRYPTO_METHOD_SSLv2_CLIENT
STREAM_CRYPTO_METHOD_SSLv3_CLIENT
STREAM_CRYPTO_METHOD_SSLv23_CLIENT
STREAM_CRYPTO_METHOD_TLS_CLIENT
STREAM_CRYPTO_METHOD_SSLv2_SERVER
STREAM_CRYPTO_METHOD_SSLv3_SERVER
STREAM_CRYPTO_METHOD_SSLv23_SERVER
STREAM_CRYPTO_METHOD_TLS_SERVER

深入研究“connectHandshake”Zend方法,我看到我可以连接到代理,但不能通过代理连接到服务器。我对这个问题持续了很长时间,任何线索?

PHP 5.6版。*

1 个答案:

答案 0 :(得分:1)

终于实现了PHP版本的问题。 在PHP 5.6中。*“verify_peer_name”默认更改为TRUE 。请参阅更改日志here

将此属性设置为false可解决连接问题。

    $adapter->setStreamContext(array(
            'socket' => array(
                // Bind local socket side to a specific interface
                'bindto'            => self::PROXY_HOST . ':' . self::PROXY_PORT
            ),
            'ssl' => array(
                'crypto_method'     => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
                // Verify server side certificate,
                'verify_peer'       => false,
                'verify_peer_name'  => false,
                'allow_self_signed' => false,
            )
        )                
    );

希望它可以帮助别人