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


Zend Unable to connect to HTTPS server through proxy

我使用的是Zend Framework 1.*,执行时"stream_socket_enable_crypto"总是返回false。Zend抛出异常this exception:

"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.*

最后意识到的是PHP版本的问题在PHP 5.6.*中,"verify_peer_name"默认值更改为TRUE。请参阅此处的更改日志。

将此属性设置为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,
            )
        )                
    );

希望它能帮助其他人